如何打开下一个屏幕右键单击导航抽屉在反应原生

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

本文关键字:原生 导航 下一个 何打开 屏幕 右键 单击      更新时间:2023-09-26

我想在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不是一个对象(求值'this.props.navigator')

未处理的JS异常:undefined不是一个对象(求值)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
                },
              });
           }
        });