You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:04:11