【问题标题】:react native undefined is not an object反应原生未定义不是对象
【发布时间】:2017-07-26 17:47:03
【问题描述】:

我是本机反应的新手,我想知道为什么我会收到这样的错误 undefined is not an object。我试图在 login.js 中按下按钮时添加第二个屏幕

但我无法启动应用程序,因为未定义不是指向此处的对象 const { navigate } = props.navigation;

谢谢大家

这是我的代码

const login = (props) => {

    const { navigate } = props.navigation;


    return (
        <View style={styles.container}>

<View style={styles.img}>
      <Image source={require('./download.png')} />
      </View>
<View style={styles.but}>
     <Button
  onPress={() => navigate ('QR')}
  title="Sign in"
  color="#2f4f4f"
/>
</View>

      </View>

    );
}


login.navigationOptions = {
    title: 'Login',
};


export default login

这是我的 index.android.js

export default class Task extends Component {
  render() {

    const { navigation} = this.props;
    return (
      <Login navigation={navigation }/>
    )
  }
}

const SimpleApp = StackNavigator({
  Home: {screen: Login},
  SecondScreen: {screen: QR}
});

【问题讨论】:

  • 如果删除 const { navigate }... 行并同时删除 onPress 事件处理程序会发生什么?
  • const { 导航 } = props.navigation;此语句正在尝试访问导航对象的导航属性并且导航未定义,请通过记录它来检查您的道具并查看它是否甚至具有导航属性(我认为没有)
  • @JanPeter 如果我删除它,按钮将不起作用。我试过了
  • @ArnavYagnik 我不明白先生
  • 就在 const { navigate } = props.navigation;尝试 console.log(props) 并检查它是否有一个导航对象,如果有,它是否有一个作为函数的导航属性。

标签: react-native


【解决方案1】:

我认为这个问题是由于在 'index.android.js' 中错误使用导航器造成的。

尝试如下更改'index.android.js':

export default class Task extends Component {
  render() {
    return (
      <SimpleApp />
    )
  }
}

const SimpleApp = StackNavigator({
  Home: {screen: Login},
  SecondScreen: {screen: QR}
});

AppRegistry.registerComponent(yourAppName, () => Task);

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多