如何在 react-native 中单击导航抽屉的右键单击打开下一个屏幕?

How to open next screen on Right Button click of navigation drawer in react-native?

我想在 react-native. 中右键单击导航抽屉打开新屏幕 在登录 submit 按钮上,我调用了以下代码:

Login.js

this.props.navigator.push({
          id: 'FirstScreen',
          title: 'First Screen',
          iconRight: 'map',
          rightPress: this.onPress, // method to redirect to second screen
          rightText: 'list',
          passProps: {
              api_token: this.state.login_token
            }
        });

//navigate to second screen
 onPress() {
  this.props.navigator.push({
        id: "SecondScreen",
        title: 'Second Screen',
  });
}

但我在这一行遇到错误。

this.props.navigator.push({
            id: "SecondScreen",
            title: 'Second Screen',
      });

出现这些错误:

Undefined is not an object (evaluating 'this.props.navigator')

Unhandled JS Exception: undefined is not an object (evaluating 'this.props.navigator')

App.js

  _renderScene(route, navigator) {
        navigator.navigate = this.navigate;
            switch (route.id) {
                case ‘Login’:
                    return ( <Login navigator={navigator} {...route.passProps} />);
                case ‘FirstScreen’:
                    return ( <FirstScreen navigator={navigator} {...route.passProps} />);
                case 'SecondScreen':
                    return ( <SecondScreen navigator={navigator} {...route.passProps} />);
            }
        }

Navigation.js

module.exports = function (scene) {
    var componentMap = {
        'Login': {
            title: 'Login',
            id: 'Login'
        },
        'FirstScreen': {
            title: 'First Screen',
            id: 'FirstScreen'
        },
        'SecondScreen': {
            title: 'Second Screen',
            id: 'SecondScreen'
        }
    }

    return componentMap[scene];
}

您可以简单地更改导航器中的 this.onPress 方法,如下所示,并删除包含 rightPress:

的行

Login.js

this.props.navigator.push({
       id: 'FirstScreen',
          title: 'First Screen',
          iconRight: 'map',
          rightText: 'list',
          passProps: {
              api_token: this.state.login_token
            }
          });
          onPress: () => {
            this.props.navigator.push({
                id: "SecondScreen",
                title: 'Second Screen',
                iconRight: 'map',
                passProps: {
                    api_token: this.state.login_token,
                    username: this.state.username
                },

              });
           }
        });