首页 > 解决方案 > 如何根据 redux store 的内容在 React Navigation 中动态指定屏幕?

问题描述

我的导航器是:

import { connect } from 'react-redux';
import { createDrawerNavigator } from 'react-navigation';

const screens = {
  Home: Homecreen,
};
if (this.props.userStatus !== 'active') {
  screens.Upgrade = UpgradeScreen;
}

const MainDrawer = createDrawerNavigator(screens);

const mapStateToProps = (state) => {
  return { userStatus: state.user.status };
};

export default connect(mapStateToProps)(MainDrawer);

我只想UpgradeScreen在用户状态不活跃时显示。在上面的代码中,我得到了错误:

undefined is not an object (evaluating 'this.props.userStatus')

我该如何解决?

标签: reactjsreact-nativereact-navigation

解决方案


为了能够访问this.props.userStatus,您应该有一个组件。以下是您的操作方法:

import { connect } from 'react-redux';
import { createDrawerNavigator } from 'react-navigation';

const screens = {
  Home: Homecreen,
};

const MainDrawer = ({ userStatus }) => {
  if (userStatus !== 'active') {
    screens.Upgrade = UpgradeScreen;
  }

  const Navigator = createDrawerNavigator(screens);

  return <Navigator />
}

const mapStateToProps = (state) => {
  return { userStatus: state.user.status };
};

export default connect(mapStateToProps)(MainDrawer);

推荐阅读