J'ai rencontré le problème de l'impossibilité d'accéder au fichier data.json et d'effectuer un nouveau filtrage de carte/composant.
P粉032977207
2023-08-16 19:28:38
<p>J'ai donc configuré ma page pour obtenir l'identifiant de la page précédente. Si je clique sur l'image 4, l'url (/Food/4) s'affiche et ainsi de suite. J'ai donc obtenu les informations correctes de la page précédente. Maintenant, le problème que j'ai est d'utiliser fetch pour obtenir mon fichier data.json, d'obtenir les informations du json, puis de restituer les informations sur la page en fonction de l'identifiant. Donc, si je clique sur l'image 4 et que je transmets l'identifiant à ma nouvelle page, je souhaite afficher les données de l'image 4 à partir du fichier json. J'ai essayé plusieurs paramètres de récupération différents et même des paramètres axios mais je suis complètement perdu. Dois-je implémenter useParams ? params.id ? Merci! </p>
<pre class="brush:php;toolbar:false;">importer React, { useState, useEffect } depuis 'react'
importer {Lien, useParams} depuis 'react-router-dom'
importer des données depuis './data.json'
exporter la fonction par défaut Foodinfo() {
const params = useParams()
const [élément, setItem] = useState();
useEffect(() => {
récupérer('/data.json')
.then(réponse => réponse.json())
.then(data => console.log(data));
})
retour (
<div>
<h1>Informations sur les aliments</h1>
<img src={item.pic} />
<Lien vers="/">
<bouton>Menu</bouton>
</Lien>
</div>
)
}</pré>
Accédez à data.json pour le filtrage
Il semble que vous souhaitiez charger un élément en fonction du
id
从JSON文件
transmis via l'URL.Vous avez directement défini le statut
data.json
文件导入到你的组件中,所以不需要使用fetch
或axios
来请求它。它已经作为变量data
存在于组件中。因此,你可以根据从URL获取的id
参数来过滤数据,然后使用相关对象设置item
.Voici comment mettre à jour le composant
Foodinfo
pour résoudre votre problème :useParams
从URL中获取id
.id
解析为整数,因为params.id
将是一个字符串类型
,而JSON文件
peuvent utiliser des chiffres comme identifiants.data数组
中找到与URL中的id
相同的item
.setItem
函数将这个item
pour définir le statut de l'article.Code ajusté :