反应导航:重新渲染导致导航参考电流为空

时间:2020-07-29 00:04:31

标签: javascript reactjs react-native react-navigation

我正在尝试使用react-navigation为React Native创建一个可重用的SplitView组件,其中父级导航器能够对其子级执行导航。为此,我使用ref在嵌套导航器上以编程方式执行导航。但是,我遇到了一个问题,当我的应用重新渲染时,我所有的导航引用都变为:

{ current: null }

我无法进行任何进一步的导航。

这里是指向Snack project的链接,演示了此问题。请注意,您必须取消注释App.js中第13-17行的注释才能看到问题。注释掉的useEffect可以强制进行初始重新渲染。没有它,导航就可以正常工作。

"Navigating without the navigation prop"的文档中有一些有关此用例初始化问题的注释,但我对他们建议的解决方案并不满意。我认为他们所指的问题是在导航容器有机会安装之前的竞争状况-我不认为这是发生在我身上的事情,因为似乎一旦我的应用重新发布,我将永远无法访问正确的参考。

1 个答案:

答案 0 :(得分:2)

事实证明,问题是因为我使用的是createRef而不是useRef。在使用refs +功能组件时,必须使用useRef钩子,因为createRef将在每个渲染器上返回一个新的ref,并且无法像在Windows中那样将创建的ref作为实例变量存储。一个类组件。