直接将反应导航连接到redux吗?

时间:2019-03-21 09:47:34

标签: reactjs react-native redux react-navigation

是否可以将TabNavigator或StackNavigator直接连接到redux?

这对于根据Redux存储库中是否存在某些条件(即用户已登录还是退出)有条件地导航到屏幕非常有用。

示例:

const Tabs = TabNavigator({ screen: userIsSignedInRedux ? SignedInTabNavigator : SignedOutScreen, }, });

其中userIsSignedInRedux是我的Redux存储中的密钥。

2 个答案:

答案 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出现