TypeError:未定义不是一个对象(评估'_this.props.navigation')
2020-09-01
102
我尝试将对象从一个屏幕传递到另一个屏幕,但总是出现错误:
TypeError: undefined is not an object (evaluating '_this.props.navigation')
我尝试了一些我看到的解决方案,但都没有奏效,我不明白为什么它不起作用。
这是我在
App.js
中设置导航的方式:
const App = () => {
const Stack = createStackNavigator();
return (
<>
<NavigationContainer >
<Stack.Navigator
screenOptions={{
headerShown: false
}}
>
<Stack.Screen
name="Home"
component={HomeScreen}
/>
<Stack.Screen
name="AddMeeting"
component={AddMeetingScreen}
/>
<Stack.Screen
name="MeetingDetails"
component={MeetingDetailsScreen}
/>
</Stack.Navigator>
</NavigationContainer>
</>
);
};
我有一个主屏幕,其中包含一个虚拟对象,以及一个在屏幕上的按钮被点击时调用的函数。
这是
HomeScreen.js
:
const HomeScreen = ({ navigation }) => {
const meeting = new Meeting("Subject", "Init", "Participants", "Location", "Date", "00:00")
_showMeetingDetails = () => {
this.props.navigaton.navigate('MeetingDetails', { Meeting: meeting });
}
return (
<>
<SafeAreaView style={styles.homeContainer}>
<TouchableOpacity style={styles.cardButton} onPress={this._showMeetingDetails}>
<MeetingCard meetingModel={meeting} />
</TouchableOpacity>
</SafeAreaView>
</>
)
}
2个回答
Homescreen 是一个函数组件,函数有自己的
this
您可以直接使用在函数参数中传递的
navigaton
。
因此,您的 _showMeetingDetails 函数将是这样的,
_showMeetingDetails = () => {
navigaton.navigate('MeetingDetails', { Meeting: meeting });
}
Anup
2020-09-01
如果您尝试从类组件导航,则应使用
this.props.navigaton.navigate('MeetingDetails', { Meeting: meeting });
但在您的情况下,您可以直接调用
navigation.navigate
,如下所示
navigaton.navigate('MeetingDetails', { Meeting: meeting });
Sourav Dey
2020-09-01