Es ist das Problem aufgetreten, dass ich nicht auf die Datei data.json zugreifen und keine neue Karten-/Komponentenfilterung durchführen konnte
P粉032977207
2023-08-16 19:28:38
<p>Also habe ich meine Seite so eingerichtet, dass sie die ID von der vorherigen Seite erhält. Wenn ich auf Bild 4 klicke, wird die URL (/Food/4) usw. angezeigt. Ich habe also die richtigen Informationen von der vorherigen Seite erhalten. Jetzt besteht das Problem, das ich habe, darin, fetch zu verwenden, um meine data.json-Datei abzurufen, die Informationen aus dem JSON abzurufen und die Informationen dann basierend auf der ID auf der Seite darzustellen. Wenn ich also auf Bild 4 klicke und die ID an meine neue Seite übergebe, möchte ich die Daten für Bild 4 aus der JSON-Datei anzeigen. Ich habe verschiedene Abrufeinstellungen und sogar Axios-Einstellungen ausprobiert, bin aber völlig ratlos. Muss ich useParams implementieren? params.id? Danke! </p>
<pre class="brush:php;toolbar:false;">import React, { useState, useEffect } from 'react'
importiere { Link, useParams } aus 'react-router-dom'
Daten aus „./data.json“ importieren
Standardfunktion Foodinfo() exportieren {
const params = useParams()
const [item, setItem] = useState();
useEffect(() => {
fetch('/data.json')
.then(response => Response.json())
.then(data => console.log(data));
})
zurückkehren (
<div>
<h1>Lebensmittelinfo</h1>
<img src={item.pic} />
<Link zu="/">
<button>Menü</button>
</Link>
</div>
)
}</pre>
访问data.json以进行过滤
看起来你想要根据通过URL传递的
id
从JSON文件
中加载一个项目。你已经直接将
data.json
文件导入到你的组件中,所以不需要使用fetch
或axios
来请求它。它已经作为变量data
存在于组件中。因此,你可以根据从URL获取的id
参数来过滤数据,然后使用相关对象设置item
状态。这是你应该更新
Foodinfo
组件以解决你的问题的方式:useParams
从URL中获取id
。id
解析为整数,因为params.id
将是一个字符串类型
,而JSON文件
中的数据可能使用数字作为ID。data数组
中找到与URL中的id
相同的item
。setItem
函数将这个item
设置为item状态。调整后的代码: