react-native - 无法导航到新屏幕反应原生收到错误未定义对象导航.导航
问题描述
无法导航到新屏幕反应本机收到错误:
TypeError:未定义不是一个对象(评估'navigation.navigate')
有人可以解释我哪里出错了吗?下面是我正在使用的代码。
const MessagesScreen = ({navigation}) => {
return (
<Container>
<FlatList
data={Messages}
keyExtractor={item=>item.id}
renderItem={({item}) => (
<Card onPress={() => navigation.navigate('Chat', {userName: item.userName})}>
<UserInfo>
<UserImgWrapper>
<UserImg source={item.userImg} />
</UserImgWrapper>
<TextSection>
<UserInfoText>
<UserName>{item.userName}</UserName>
<PostTime>{item.messageTime}</PostTime>
</UserInfoText>
<MessageText>{item.messageText}</MessageText>
</TextSection>
</UserInfo>
</Card>
)}
/>
</Container>
);
};
export default MessagesScreen;
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
},
});
解决方案
您似乎忘记在 Navigator 堆栈中声明您的屏幕。像这样的东西
<Stack.Screen
name="MessagesScreen"
component={MessagesScreen} />
这是来自官方页面的示例,带有 反应导航 v5
import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
function HomeScreen() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
</View>
);
}
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
推荐阅读
- html - 我目前正在研究 selenium,我想选择一个下拉列表,但它没有 id,并且它的类也与其他下拉列表的类匹配
- javascript - 如何在本体中创建地址
- python - 无法点击按钮
- javascript - javascript插件css冲突
- java - Set.of vs Collections.singleton
- html - 什么人需要定位他的 HTML 元素以允许溢出:隐藏,在圆圈上?
- javascript - 验证 ajax 错误
- c# - 使用 Unity 多显示器如何更改与 Unity 显示器关联的物理显示器?
- c# - 需要 C# winform 编码以通过单击保存在具有适当凭据的网络共享文件夹中存储和检索多个文件(excel、pdf、docx)?
- node.js - AWS lambda 和 dynamodb 分页