【发布时间】:2020-08-07 13:17:44
【问题描述】:
我正在尝试根据用户是否登录有条件地呈现我的 redux 应用程序。我的代码的相关和精简版本如下:
let isLoggedIn = false;
export default function App() {
console.log('App executing...');
console.log('isLoggedIn: ', isLoggedIn);
return (
<Provider store={store}>
<NavigationContainer>
{isLoggedIn ? ContactsTab() : Login()}
</NavigationContainer>
</Provider>
);
}
store.subscribe(() => {
// Set isLoggedIn to true if token is received and reinvoke App()
if (store.getState().user.token) {
isLoggedIn = true;
App();
}
});
应用开始时控制台记录 isLoggedIn: false 并显示 Login()(如预期的那样)。当我使用正确的凭据登录手机时,App() 被重新调用控制台日志记录 isLoggedIn: true(如预期的那样),但它仍然显示 Login( )。如果我在应用函数中设置 isLoggedIn = true,应用会成功开始显示 ContactsTab()。
这里发生了什么?当 isLoggedIn 的值成功更改为 true 时,为什么我的应用程序没有移动到 ContactsTab()?我该如何解决这个问题?
感谢您的阅读。在过去的 2 天里,我一直在尝试调试它,但没有成功,所以任何帮助都将不胜感激!
【问题讨论】:
标签: react-native redux react-redux react-navigation-v5 conditional-rendering