reactjs - 尝试根据 redux 状态有条件地设置导航链接
问题描述
我试图根据最初未定义但在 API 调用后异步设置的 redux 状态有条件地设置导航链接,但是,导航链接在 api 响应之前呈现一次,因此始终未定义。我正在寻找一些关于如何使用 react-native 和 redux 成功地做到这一点的建议。
路线配置是 -
export default createBottomTabNavigator(
{
Home: HomeStack,
Search: SearchStack,
...!store.getState().UserReducer.user_id ? { Login: LoginStack } : { }
}
);
父组件是 -
export default class App extends Component
{
constructor(props)
{
super(props);
this.state = {
isLoggedIn: false,
}
}
componentWillMount()
{
fetch(ApiConfig.user.is_logged_in())
.then(response => response.json())
.then(({data}) => {
if (data.status === false)
return;
// Set user information.
store.dispatch(setUserId(data.session.user_id));
store.dispatch(setUserName(data.session.username));
store.dispatch(setUserEmail(data.session.email));
store.dispatch(setUserLastLogin(data.session.old_last_login));
store.dispatch(setUserLastIp(data.session.last_ip));
store.dispatch(setShowCost(data.session.show_cost));
store.dispatch(setShowPrice(data.session.show_price));
store.dispatch(setAvatar(data.session.avatar));
this.setState({ isLoggedIn: true });
})
.catch(error => console.error(error));
}
render()
{
return (
<Provider store={store}>
<NavigationStack loggedIn={this.state.isLoggedIn} />
</Provider>
);
}
}
解决方案
推荐阅读
- azure-pipelines - Azure Pipelines API - 获取构建代理信息
- lua - NSE:未能初始化脚本引擎:
- python - 如何在按住键的同时刷新 OpenCV 窗口
- sql-server - 尽管修复了防火墙设置,但 Azure 服务器访问问题
- reactjs - Reselect:如何缓存写入reducer的数据?
- jenkins-pipeline - 根据作业执行某些阶段
- reactjs - .ts 和 .tsx 扩展名有什么区别。两者都用作响应中打字稿文件的扩展。那么我们应该在哪里使用它们呢?
- c# - 是否可以将 select 作为表达式传递以进行投影 DbSet?
- objective-c - 如何在 Objective C 或 Swift 中使用重复线性渐变
- azure - 仅部分用户出现“权限不足,无法完成操作”错误