0

我按照教程使用 React-Navigation,尝试移动到另一个页面时遇到问题。我收到此错误:Undefined is not an object (evaluating 'this.props.navigator.replace')

我在这里和其他网站上搜索过,但对我没有任何帮助。这是我的代码:

指数:

 import React, { Component } from 'react';
 import { Root } from './config/Router';

 class Application extends Component{
   render(){
     return <Root />;
   }
 }

export default Application;

路由器:

import React from 'react';
import { StackNavigator } from 'react-navigation';

import Login from '../pages/Login';
import Home from '../pages/Home';

export const Root = StackNavigator({
  Login:{
    screen: Login,
  },
  Home:{
    screen: Home,
    navigatorOptions:{
      title: "Homepage"
    }
  }
});

登录(点击这里的按钮,出现问题):

  export default class Login extends Component{
  constructor(props){
    super(props);
  }
  _navigate(routeName){
    this.props.navigator.replace({
      name: routeName
    });
  }
  render(){
    return(
       <View style = {styles.container}>
          <TouchableOpacity onPress={this._navigate.bind(this, 'Home')}>
            <Text>
              Hello.
            </Text>
          </TouchableOpacity>
       </View>
    );
  }
}

我究竟做错了什么 ?

提前致谢。

4

2 回答 2

0

根据React Native 文档,您需要使用 导航this.props.navigation,而不是this.props.navigator

 export default class Login extends Component{
  constructor(props){
    super(props);
  }
  _navigate(routeName){
    this.props.navigation({
      name: routeName
    });
  }
  render(){
    return(
       <View style = {styles.container}>
          <TouchableOpacity onPress={this._navigate.bind(this, 'Home')}>
            <Text>
              Hello.
            </Text>
          </TouchableOpacity>
       </View>
    );
  }
}
于 2017-04-15T19:39:12.503 回答
0
class HomeScreen extends React.Component {
  //Some code here  
}

class ChatScreen extends React.Component {
     //Some code here
}

const SimpleApp = StackNavigator({
    Home: { screen: HomeScreen },
    Chat: { screen: ChatScreen },
});

AppRegistry.registerComponent('HelloWorld', () => SimpleApp);

您应该注册“Simple”而不是“HomeScreen”

于 2017-08-11T06:45:11.013 回答