اذهب إلى المحتوى
  • 0

كيفية عمل upgrade من react navigation 4 ل react navigation 5

Ahmed Sawy

السؤال

اريد تعديل هذا الكود فى السطر 11 لكى يتناسب مع react navigation 5 

 

وهذه رسالة الخطأ التى تظهر عندما اضغط حفظ 

TypeError : undefined is not an object ( evaluating 'navigation.state.params') )


انا متاكد ان علاج هذا الخطأ يكمن فى تعديل ذالك السطر 

2.thumb.png.536bfa0a3ccc815a46076d5c2a21bb1c.png

 

 

 

هذه بعض الملفات الاخرى 

هذا الملف المرتبط ب نافيجيشن 4 

5f95b992c540c_4.thumb.png.251e38d71f28a0bc1bf17d56cdb57410.png

 

هذا الملف المرتبط ب نافيجيشن 5

5f95b99682cdb_5.thumb.png.56f947fde8abdbc2f6bf6a2933c55763.png

 

هذه رسالة التحذير ..

5f95b98faaf0f_.thumb.png.143cd0b220162d8055f531dca59566a6.png

 

وهذه رسالة الخطأ التى تظهر عندما اضغط حفظ 

TypeError : undefined is not an object ( evaluating 'navigation.state.params') )

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

 

يمكن تحديث الحالة state بإستعمال route بدلاً من navigation

كمثال:

 

function addNotes ({navigation,route}) {

....// yourcodes

route.params.addNote({ NoteTitle, NoteDescription });

navigation.goBack();

}

 

تم التعديل في بواسطة رضوان نسيم
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك الاطلاع على هذا المثال حتى تتعلم كيف نقوم بتمرير ال parameters إلى screen سابقة حيث أن الطريقة التي استخدمتها غير صالحة الآن.

حيث أننا أصبحنا نستخدم navigate بدلًا من ()goback.أيضًا يمكننا تمرير المعاملات باستخدام navigate 

function HomeScreen({ navigation, route }) {
  React.useEffect(() => {
    if (route.params?.post) {
      // Post updated, do something with `route.params.post`
      // For example, send the post to the server
    }
  }, [route.params?.post]);

  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button
        title="Create post"
        onPress={() => navigation.navigate('CreatePost')}
      />
      <Text style={{ margin: 10 }}>Post: {route.params?.post}</Text>
    </View>
  );
}

function CreatePostScreen({ navigation, route }) {
  const [postText, setPostText] = React.useState('');

  return (
    <>
      <TextInput
        multiline
        placeholder="What's on your mind?"
        style={{ height: 200, padding: 10, backgroundColor: 'white' }}
        value={postText}
        onChangeText={setPostText}
      />
      <Button
        title="Done"
        onPress={() => {
          // Pass params back to home screen
          navigation.navigate('Home', { post: postText });
        }}
      />
    </>
  );
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

معنى الخطئ 

TypeError : undefined is not an object ( evaluating 'navigation.state.params') )

أن navigation غير معرف داخل الدالة onSaveNote يجب أن يكتب هكذا

function onSaveNote({ navigation }){

} 

 

تم التعديل في بواسطة mohamedewias
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 دقائق مضت قال mohamedewias :

معني الخطئ 

TypeError : undefined is not an object ( evaluating 'navigation.state.params') )

ان navigation غير معرف داخل الدالة onSaveNote

يجب أن يكتب هكذا function onSaveNote(     navigation) {

للأسف لم تنفع .. اانا اريد ترقية الكود للنسخة الخامسة لاننى قرات فى الDOCS ان هذا السطر لم يعد يعمل 
navigation.state.params.addNote({ noteTitle, noteValue })

 

وانا اريد تعديله حتى يتماشى مع النسخة الخامسة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال رضوان نسيم:

 

يمكن تحديث الحالة state بإستعمال route بدلا من navigation

كمثال:

 

 

شكرا جزيلا لحضرتك ... نفعت بفضل الله ثم مساعدتك شكرا جزيلا 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...