具有未定义参数的 NavigationContainer 上的 onStateChange
onStateChange on NavigationContainer with undefined param
我在 NavigationContainer
内使用 NavigationContainer
和 React Navigation 5。在此之前,我在 createAppContainer
内使用导航 5 中的 NavigationContainer
进行测试在导航 4 中,它工作正常。
问题是:当我的第二个NavigationContainer调用onStateChange
函数时,接收到的参数未定义。此外,当使用 ref 时,getRootState
方法也 returns 未定义。我可以使用 ref 在屏幕之间导航,也可以正常调用 goBack 函数。
示例代码:
const navigationRef = React.useRef();
第二个导航:
<NavigationContainer
independent={true}
ref={navigationRef}
onStateChange={navigationChanged}
>
<BusinessNavigation />
</NavigationContainer>;
工作正常:
navigationRef.current.resetRoot({
routes,
index: 0
});
navigationRef.current.goBack();
问题:
navigationRef.current.getRootState(); //returns always undefined
const navigationChanged = (params: any) => {
console.log(params); //is undefined
};
我现在正在使用侦听器,它可以很好地解决我的问题。代码示例:
navigationRef.current.addListener('state', e => {
const state = e.data.state; //works
});
我在 NavigationContainer
内使用 NavigationContainer
和 React Navigation 5。在此之前,我在 createAppContainer
内使用导航 5 中的 NavigationContainer
进行测试在导航 4 中,它工作正常。
问题是:当我的第二个NavigationContainer调用onStateChange
函数时,接收到的参数未定义。此外,当使用 ref 时,getRootState
方法也 returns 未定义。我可以使用 ref 在屏幕之间导航,也可以正常调用 goBack 函数。
示例代码:
const navigationRef = React.useRef();
第二个导航:
<NavigationContainer
independent={true}
ref={navigationRef}
onStateChange={navigationChanged}
>
<BusinessNavigation />
</NavigationContainer>;
工作正常:
navigationRef.current.resetRoot({
routes,
index: 0
});
navigationRef.current.goBack();
问题:
navigationRef.current.getRootState(); //returns always undefined
const navigationChanged = (params: any) => {
console.log(params); //is undefined
};
我现在正在使用侦听器,它可以很好地解决我的问题。代码示例:
navigationRef.current.addListener('state', e => {
const state = e.data.state; //works
});