【发布时间】: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