Нужен компонент Home, который обновляется каждый раз, когда я нажимаю на него из ящика [реагировать на родной]

У меня есть экран ящика с именем Home, и он отображает навигатор верхней вкладки материалов и другой экран стека, определенный внутри него. Проблема в том, что я хочу повторно отображать домашний экран, когда я нажимаю на него с других определенных экранов. Пожалуйста, помогите, это самый общий в приложениях требуется функция, но я не могу ее сделать. | iOS или Android | оба | @ react-navigation / native 5.0.7 | @ react-navigation / drawer 5.1.0 | React-native-reanimated 1.7.0 | обработчик жестов реагирования 1.6.0 | контекст-нативная-безопасная-область-реакция 0.7.3 | реагировать на родные экраны 2.8.0 | реагировать-родной 0.61.5

введите здесь описание изображения


person Deepak Bhattarai    schedule 31.05.2020    source источник
comment
Не уверен, что вы имеете в виду под повторным рендерингом, но если вы хотите запускать функцию каждый раз при открытии экрана, вы можете использовать хук usefocuseffect reactnavigation.org/docs/use-focus-effect   -  person Guruparan Giritharan    schedule 31.05.2020
comment
Я хочу обновить домашний экран до его начального состояния ... при нажатии кнопки Home на экране ящика вы можете посмотреть изображение выше   -  person Deepak Bhattarai    schedule 31.05.2020


Ответы (1)


Вы должны использовать события навигации, чтобы определить конкретный фокус экрана и размытие. focus - это событие генерируется, когда экран попадает в фокус размытия - это событие генерируется, когда экран выходит из фокуса

использование

    function Profile({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      //This event is emitted when the screen comes into focus
      // do something
    });

    return unsubscribe;
  }, [navigation]);

  return <ProfileContent />;
}


    function Profile({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('blur', () => {
      //This event is emitted when the screen goes out of focus
      // do something
    });

    return unsubscribe;
  }, [navigation]);

  return <ProfileContent />;
}

Дополнительную информацию можно найти в документации здесь

person Shahid ali    schedule 31.05.2020