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

السؤال

نشر

أنا جديد في React Native. كيف يمكننا تحديث / إعادة تحميل الشاشة السابقة عند العودة إليها باستدعاء goBack ()؟

لنفترض أن لدينا 3 شاشات a b c
عندما نقوم بتشغيل goBack () من الشاشة C ، فإنه يعود إلى الشاشة B ولكن مع state بالبيانات القديمة. كيف يمكننا تحديثه؟

Recommended Posts

  • 0
نشر

توجد عدة طرق لتنفيذ ذلك يمكننا استخدام ال hook التالي useIsFocused  ثم استخدام هذه القيمة ك dependency ل sideEffect لتنفيذ دالة ما كالتالي

const componentB = (props) => { 
  // يتأكد ما إذا كانت هذه الصفحة مفتوحة أم لا
  const isFocused = useIsFocused();


  useEffect(() => {
    updateSomeFunction()//isFocused يتم تنفيذ هذه الدالة بناءاً على القيمة
  },[isFocused]);
}

 

  • 0
نشر

إن كنت تستخدم react-navigation 5.x يمكن استخادم الدالة:

componentDidMount() {
  this.loadData();

  this.focusListener = this.props.navigation.addListener('focus', () => {
    this.loadData();
  });
}

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

إن كنت تستخدم functional component نستعمل useEffect ونعمل على تحديثها بتغيير Navigation:

function Home({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      loadData();
    });
    return unsubscribe;
  }, [navigation]);

  return <HomeContent />;
}

سيتم تحديث الصفحة بتغيير الرابط وعند التركيز على هذه الصفحة.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...