反应导航:离开焦点状态时,屏幕道具侦听器不会触发

时间:2020-05-09 19:00:07

标签: reactjs react-native react-navigation

与其说是一个bug,不如说是一个问题。

我有一个带有react-navigation的聊天消息应用程序,其中一个标签栏包含堆栈,而所述堆栈包含屏幕。 收到消息时,我需要知道当前是否有聚焦的聊天屏幕(以及哪个屏幕),以便我知道是否发出徽章警报。这意味着我需要访问navigationroute道具。但是,接收消息的API订阅是在底部栏组件中设置的(不确定这是否正确,但是很容易将徽章编号从那里传递到标签栏图标),并且令人遗憾的是,它会做出反应导航,此组件没有导航/路线道具(并且在列出的解决方案中不能有)。

尝试的解决方案:

  1. 我尝试使用useNavigation,但这告诉我底部的标签栏组件不在屏幕中(duh)。

  2. 我尝试使用屏幕道具listeners:在focus = true时触发,但在focus = false时不触发。如果可以使用的话,这将是非常有用的,因为它可以让我简单地传递高级标签栏组件的状态,并从该侦听器对其进行编辑。

  3. 我正在考虑使用类似的东西:

  useFocusEffect(
    useCallback(() => {
      console.log('f', navigation.isFocused());
      return () => console.log('nf', navigation.isFocused());
    }, [navigation]),
  );

但这需要我设置上下文,因此我将其作为最后的选择。

我希望有人告诉我我做错了什么,并且有更好的方法可以做到这一点,或者到目前为止还缺乏反应导航,我必须使用解决方案3来做到这一点。

0 个答案:

没有答案