【发布时间】:2020-09-21 22:49:27
【问题描述】:
我在我的应用中使用 react-navigation;我有一个这样的导航器:
const RootStack = createStackNavigator();
<RootStack.Navigator>
<RootStack.Screen name="Main" component={Main} />
<RootStack.Screen name="B" component={B} />
<RootStack.Screen name="C" component={C} />
</RootStack.Navigator>
现在当应用程序启动时Main 将呈现;我正在使用 redux 操作获取一些数据,并且基于该数据,我可能必须将用户重定向到 C
所以在Main 组件中我只是在做
useEffect(() => {
if (shouldRedirect)
console.log('here')
navigation.navigate('C')
}
}, [shouldRedirect])
好吧,此时我可以在控制台中看到日志,但导航并没有发生;
我想这是因为有些东西还没有准备好,因为只需将navigate 包装在如下所示的超时中,就可以使其按预期工作:
useEffect(() => {
if (shouldRedirect) {
setTimeout(() => {
navigation.navigate('C')
}, 1)
}
}, [shouldRedirect])
无论如何,这看起来是一个丑陋的解决方法;我想了解如何正确实施...
【问题讨论】:
标签: react-native react-navigation