【发布时间】:2019-09-24 04:47:04
【问题描述】:
我一直在尝试通过单击代码中的图像来更改屏幕,但它不起作用。
我尝试定义 Push、navigate 和其他道具,但它总是说 undefined 不是对象并显示道具。
import React from 'react';
import { AppRegistry, StyleSheet, View, Image, TouchableOpacity, Button } from "react-native";
import { widthPercentageToDP as wp, heightPercentageToDP as hp } from 'react-native-responsive-screen'
import { StackNavigator, createStackNavigator, createAppContainer } from 'react-navigation';
import Screen from './Screen'
export default class Additional extends React.Component {
render(){
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<TouchableOpacity onPress={() =>
navigate("Screen")}
>
<Image
style={{
tintColor: "#9B9B9B", height: 56, width: 56,
position: 'absolute', alignSelf: 'center', top: wp('-84.0%'), left: wp('5%'),
}}
source={require("../Icons/XButton.png")}
/>
</TouchableOpacity>
</View>
)
}
}
const AppNavigator = createStackNavigator({
Home: {screen: Home},
Screen: {screen: Screen},
}, {
initialRouteName: 'Home',
});
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
}
})
【问题讨论】:
-
您是否进行了测试以确保
navigate不是undefined?从您的代码中不清楚Additional与堆栈导航器的关系。 -
@MikeM 好吧,附加文件是一张图片,点击后会将我带到屏幕。我已经运行了该应用程序,如果我多次单击该图标,它会给我提到“未定义不是对象”的错误。如果我可以运行任何其他测试,请告诉
-
如果
Additional只是图像(而不是屏幕),那么除非您明确传递它们,否则它无法访问导航道具。 -
所以你需要像
<Additional navigation=this.props.navigation />一样从父屏幕调用它。 -
@MikeM 我已经将它添加到它说导航不是变量的父级,所以我写了 const {navigate} = this.props.navigation 它给了我另一个未定义对象的错误。因此,我决定将“this.props.navigation”添加到父级的父级并且屏幕可以正常工作,但是当我单击图标时,它只会显示不透明度并且不会导航到屏幕,保持在同一页面上
标签: react-native routing navigation frontend react-navigation