我正在尝试使用react-navigation为React Native创建一个可重用的SplitView组件,其中父级导航器能够对其子级执行导航。为此,我使用ref在嵌套导航器上以编程方式执行导航。但是,我遇到了一个问题,当我的应用重新渲染时,我所有的导航引用都变为:
{ current: null }
我无法进行任何进一步的导航。
这里是指向Snack project的链接,演示了此问题。请注意,您必须取消注释App.js
中第13-17行的注释才能看到问题。注释掉的useEffect可以强制进行初始重新渲染。没有它,导航就可以正常工作。
"Navigating without the navigation prop"的文档中有一些有关此用例初始化问题的注释,但我对他们建议的解决方案并不满意。我认为他们所指的问题是在导航容器有机会安装之前的竞争状况-我不认为这是发生在我身上的事情,因为似乎一旦我的应用重新发布,我将永远无法访问正确的参考。
答案 0 :(得分:2)
事实证明,问题是因为我使用的是createRef
而不是useRef
。在使用refs +功能组件时,必须使用useRef
钩子,因为createRef
将在每个渲染器上返回一个新的ref,并且无法像在Windows中那样将创建的ref作为实例变量存储。一个类组件。