Rumah > Soal Jawab > teks badan
P粉0200855992023-08-17 18:30:41
Nampaknya anda ingin memuatkan item berdasarkan id
从JSON文件
yang dihantar melalui URL.
Anda telah menetapkan status data.json
文件导入到你的组件中,所以不需要使用fetch
或axios
来请求它。它已经作为变量data
存在于组件中。因此,你可以根据从URL获取的id
参数来过滤数据,然后使用相关对象设置item
terus.
Beginilah anda harus mengemas kini komponen Foodinfo
untuk menyelesaikan masalah anda:
useParams
从URL中获取id
. id
解析为整数,因为params.id
将是一个字符串类型
,而JSON文件
boleh menggunakan nombor sebagai ID. data数组
中找到与URL中的id
相同的item
. setItem
函数将这个item
untuk menetapkan kepada status item. Kod terlaras:
import React, { useState, useEffect } from 'react'; import { Link, useParams } from 'react-router-dom'; import data from './data.json'; export default function Foodinfo() { const params = useParams(); const [item, setItem] = useState(null); useEffect(() => { // 将URL参数中的id解析为整数类型 const idFromUrl = parseInt(params.id, 10); // 在数据数组中找到与URL中的id匹配的项目 const foundItem = data.find((d) => d.id === idFromUrl); // 将找到的项目设置为状态 setItem(foundItem); }, [params.id]); return ( <div> <h1>食物信息</h1> {/* 在尝试访问其属性之前检查项目是否存在 */} {item ? ( <> <img src={item.pic} alt={item.name} /> <p>{item.name}</p> <p>{item.description}</p> </> ) : ( <p>加载中...</p> )} <Link to="/"> <button>菜单</button> </Link> </div> ); }