如何根据redux商店的内容在React Navigation中动态指定屏幕?

kha*_*eeb 5 reactjs react-native 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);
Run Code Online (Sandbox Code Playgroud)

我想UpgradeScreen只显示用户状态是否处于活动状态.在上面的代码中,我收到错误:

undefined is not an object (evaluating 'this.props.userStatus')
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Jor*_*nev 2

为了访问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);
Run Code Online (Sandbox Code Playgroud)