React Native:无法读取undefined的属性'push' - 让NavigatorIOS和ES6绑定(这个)

Rob*_* IV 5 javascript iphone facebook ios react-native

我正在开发一个react本机应用程序,我试图通过Facebook成功登录后将用户路由到下一个视图.

问题是我继续得到一个错误,指出"无法读取未定义的属性'推送'." 我已经在论坛上检查了所有相关的答案,我确保在我的函数调用中包含NavigatorIOS和bind(this) - 所以这些都是问题所在.

我很乐意帮助确定什么是错的,因为我是新手开发者.

这是错误:

Error: Cannot read property 'push' of undefined
 stack: 
  <unknown>                                              index.ios.bundle:1498
  MessageQueue.__invokeCallback                          index.ios.bundle:7235
  <unknown>                                              index.ios.bundle:7151
  guard                                                  index.ios.bundle:7104
  <unknown>                                              index.ios.bundle:7151
  <unknown>                                              index.ios.bundle:7148
  ReactDefaultBatchingStrategyTransaction.Mixin.perform  index.ios.bundle:6552
  Object.ReactDefaultBatchingStrategy.batchedUpdates     index.ios.bundle:15885
  Object.batchedUpdates                                  index.ios.bundle:5084
 URL: undefined
 line: undefined
 message: Cannot read property 'push' of undefined
Run Code Online (Sandbox Code Playgroud)

============================

这是我的代码

'use strict';

var React = require('react-native');
var Main = require('./App/Components/Main');
var Icon = require('./node_modules/react-native-vector-icons/FontAwesome');
var FacebookLoginManager = require('NativeModules').FacebookLoginManager;
var {
AppRegistry,
StyleSheet,
Text,
View,
TouchableHighlight,
NavigatorIOS,
Navigator,
} = React;

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
 welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
 instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
    marginTop: 10
 },
 icon: {
    fontSize: 20,
    color: 'white',
    paddingVertical: 5,
    paddingHorizontal: 8,
    borderRadius: 4,
    backgroundColor: '#3b5998',
 },
text: {
    marginLeft: 10,
    color: 'white',
    fontWeight: '600',
},
});

class nomsyapp extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      result: 'Find the Foods that Fit Your Lifestyle',
      loggedIn: false,
    };
  }

  login() {
    FacebookLoginManager.newSession((error, info) => {
      if (error) {
        this.setState({result: error});
      } else {
        this.setState({result: info});
        this.setState({loggedIn: true});
        this.props.navigator.push({
          component: Main,
          title: 'Choose Your Lifestyle',
        });
      }
    });
  }

  render() {
    return (
      <View style={styles.container}>
        <TouchableHighlight onPress={this.login.bind(this)}>
         <Icon name="facebook" style={styles.icon}>
            <Text style={styles.text}>Login with Facebook</Text>
          </Icon>
        </TouchableHighlight>
        <Text style={styles.instructions}>
          {this.state.result}
        </Text>
      </View>
    );
  }
};


AppRegistry.registerComponent('nomsyapp', () => nomsyapp);
Run Code Online (Sandbox Code Playgroud)

============================

edd*_*yjs 3

这是您的初始路线所需的格式:

render: function() {
  return (
    <NavigatorIOS
      initialRoute={{
        component: nomsyapp,
        title: 'Nomsyapp',
        passProps: { /*whatever props you want */ },
      }}
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

此示例基于Facebook 文档

因此,您应该将所有当前代码移至另一个组件中,并使用上面显示的渲染函数创建一个新组件。然后该nomsyapp组件将具有该navigator属性,您将能够导航路线。