React Native中FlatList结合条件判断实现页面跳转的代码错误排查求助
问题排查与修复方案
我看了你的代码,发现两个核心问题导致跳转逻辑不生效,同时还有跳转目标统一的问题需要调整:
1. 错误的数据源访问方式
你在onPress判断里用的是data.unit,但data是FlatList绑定的整个数组数据源,每个列表项的unit属性其实在当前渲染的item对象里。直接访问data.unit会返回undefined,所以所有的条件判断都不会触发,自然不会执行跳转。
2. 所有分支跳转目标一致
你现在所有else if分支都跳转到tyt页面,这和你需求里的"对应条件跳转到不同页面"不符,需要替换成每个unit对应的目标页面名称。
修复后的完整代码
import React from 'react'; import { View, TouchableOpacity, Text, SafeAreaView, FlatList } from 'react-native'; import { StackActions } from '@react-navigation/native'; // 确保导入StackActions import data from './data/dokuzuncu'; export default class dokuz extends React.Component { renderContactsItems = ({ item, index }) => { return ( <View style={styles.list}> <TouchableOpacity onPress={() => { let targetScreen; // 根据item.unit匹配对应的目标页面 switch(item.unit) { case 'Madde ve Özellikleri': targetScreen = '目标页面1'; // 替换成截图里对应这个unit的页面名称 break; case 'Hareket ve Kuvvet': targetScreen = '目标页面2'; // 替换成对应页面名称 break; case 'Enerji': targetScreen = '目标页面3'; break; case 'Isı ve Sıcaklık': targetScreen = '目标页面4'; break; case 'Elektrostatik': targetScreen = '目标页面5'; break; default: targetScreen = '默认页面'; // 可选:设置一个默认跳转页面 break; } // 执行跳转 const pushAction = StackActions.push(targetScreen); this.props.navigation.dispatch(pushAction); }} > <Text style={{fontWeight:'bold',fontSize:25}}>{item.unit}</Text> <Text style={{fontSize:25}}>{item._id}</Text> </TouchableOpacity> </View> ) }; render() { return ( <SafeAreaView style={styles.container}> <FlatList keyExtractor={(item) => item._id} renderItem={this.renderContactsItems} data={data} /> </SafeAreaView> ) } }
额外注意事项
- 确保你已经正确导入
StackActions,否则会报错找不到这个模块。 - 把代码里的
目标页面1/目标页面2等替换成你截图里粗体文本对应的实际页面路由名称(比如如果截图里对应'Madde ve Özellikleri'的是'maddePage',就改成这个)。 - 如果
data不是数组类型,那FlatList的数据源就有问题,需要确认./data/dokuzuncu导出的是一个包含多个{unit: '', _id: ''}结构对象的数组。
内容的提问来源于stack exchange,提问作者selcukctn
相关产品推荐
相关产品推荐

