React Native点击图片跳转新页面报错:NAVIGATE未被导航器处理
问题原因
报错的核心是导航目标名称不匹配:
- 在
app.js的栈导航中,你给目标屏幕注册的名称是PostImage - 但在
profile.js的openImage函数里,你用了文件路径./postImage作为导航目标,导航器找不到这个名称的屏幕,所以抛出错误。
修复步骤
1. 修正导航目标名称
修改profile.js中的openImage函数,把导航目标改成你在app.js里注册的屏幕名称PostImage:
const openImage = (image) => { navigation.navigate('PostImage', { image }); };
2. 确保navigation对象可用
如果你的profile.js是函数组件,要确保正确获取navigation对象:
- 若组件是通过导航栈直接渲染的,
navigation会作为props传入; - 若不是,需要导入
useNavigation钩子:
import { useNavigation } from '@react-navigation/native'; // 在组件内部 const navigation = useNavigation();
3. 增强参数容错性(可选)
postImage.js中可以加个空值判断,避免因参数缺失导致的报错:
const PostImage = ({ route }) => { const { image } = route.params || {}; if (!image) { return <View><Text>图片未找到</Text></View>; } return ( <View style={styles.container}> <Image source={image} style={styles.image} resizeMode="contain" /> </View> ); };
补充说明
导航器只会识别你在Stack.Screen中通过name属性注册的屏幕标识,和文件路径无关。所有导航操作都要使用这个注册的名称,而非文件路径或组件名。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

