是否可以将TabNavigator或StackNavigator直接连接到redux?
这对于根据Redux存储库中是否存在某些条件(即用户已登录还是退出)有条件地导航到屏幕非常有用。
示例:
const Tabs = TabNavigator({
screen: userIsSignedInRedux ? SignedInTabNavigator : SignedOutScreen,
},
});
其中userIsSignedInRedux是我的Redux存储中的密钥。
答案 0 :(得分:0)
由于这种方法潜在的性能问题,通常是可能的,但不建议这样做。
React-navigation之前有关于该主题的文档,但是按照最新版本中的建议,将其删除。
您可以查看以下内容:https://reactnavigation.org/docs/en/redux-integration.html
您可以将特定视图(首先在导航器中)连接到redux,并且在 componentWillMount 方法中可以重定向(例如,如果您的用户已登录)。
但是,如果您有特定案例可以通过redux处理节省时间,请查看以下解决方案:
https://github.com/react-navigation/react-navigation-redux-helpers
答案 1 :(得分:0)
尝试一下:
import React from 'react';
const TabNavigator = ({ isLoggedIn }) => {
const RouteConfigs = {
Screen: isLoggedIn ? SignedInTabNavigator : SignedOutScreen
};
const Navigator = createBottomTabNavigator(RouteConfigs);
return <Navigator />
};
const mapStateToProps = ({ auth }) => ({ isLoggedIn: auth.isLoggedIn });
export default connect(mapStateToProps)(TabNavigator);
但是要使不要渲染导航,直到确定isLoggedIn
的值为止。.如果不这样做,您将看到某种闪烁的效果(SignOutScreen将渲染一会儿,如果isLoggedIn解析为true
,您将看到SignInTabNavigator出现