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

React Native跳转ResourceDetail页报_props$route$params$d.id相关TypeError怎么解决?

报错原因

你遇到的类型报错本质是尝试从undefined值上读取id属性导致的,具体诱因有两个:

  • 列表页的renderData方法中,Card组件绑定的onPress事件调用clickedItem时没有传入当前遍历的item参数,导致clickedItem接收的data形参为undefined,跳转时传递给详情页的data参数也为空
  • 详情页直接从props.route.params.data上解构属性,没有做空值兼容,当data为undefined时读取属性就会触发报错
修复方案

第一步:修复列表页传参逻辑

给clickedItem调用传入当前item参数即可,修改后的代码如下:

const clickedItem = (data) => {
        props.navigation.navigate("ResourceDetail", { data: data })
 }  

const renderData = (item) => {
        return (
            <Card style={styles.cardStyle} onPress={() => clickedItem(item)}>
                <Text style={{ fontSize: 25 }}>{item.title}</Text>
                <Text style={{ fontSize: 17 }}>{item.docs}</Text>
            </Card>
        )
    }

第二步:可选优化(详情页加空值兼容)

可以给详情页的参数读取增加可选链和默认值兜底,避免偶发的参数为空时页面崩溃:

import React from 'react'
import { StyleSheet, Text, View } from 'react-native'

function ResourceDetail(props) {
    // 用可选链判断params.data是否存在,不存在则兜底为空对象
    const { id, title, docs } = props.route.params?.data ?? {};
    return (
        <Text>{title ?? '暂无数据'}</Text>
    )
}

export default ResourceDetail

内容的提问来源于stack exchange,提问作者James_56

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:09:03