React Native中如何将数组索引作为Props传递给嵌套页面?
解决React Native中Pressable跳转传索引的语法错误问题
你遇到的Unexpected token, expected ","错误,大概率是传递参数时的语法写错了——在navigation.navigate的第二个参数里误用了JSX属性的写法,正确的方式是传递对象字面量。
错误写法示例(导致报错)
// 错误:把参数写成了JSX属性格式index={itemIndex},这会触发语法错误 <Pressable onPress={() => navigation.navigate('COURSE', index={itemIndex})}>
正确的参数传递写法
在navigate的第二个参数里用标准对象键值对传递索引:
programList.map((program, itemIndex) => ( <Pressable key={itemIndex} onPress={() => navigation.navigate('COURSE', { programIndex: itemIndex })} > {/* 列表项内容,比如显示program名称 */} <Text>{program.title}</Text> </Pressable> ))
在COURSE页面接收索引
目标页面通过useRoute钩子获取传递的参数,再从全局数组programList中取出对应实例:
import { useRoute } from '@react-navigation/native'; function CourseScreen() { const route = useRoute(); // 可选链操作符?避免参数未传递时的报错 const programIndex = route.params?.programIndex; const targetProgram = programList[programIndex]; // 后续使用targetProgram做业务逻辑 return ( <View> <Text>{targetProgram?.description}</Text> </View> ); }
额外注意点
- 确保
map遍历数组时正确获取到索引(map的第二个参数就是当前项的索引) - 全局数组
programList如果是动态更新的,建议用useState或者状态管理工具(比如Redux)维护,避免组件无法感知数组变化导致渲染异常
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

