それで、前のページから ID を取得するようにページを設定しました。画像 4 をクリックすると、URL (/Food/4) などが表示されます。したがって、前のページから正しい情報を得ることができました。ここで私が抱えている問題は、fetchを使用してdata.jsonファイルを取得し、jsonから情報を取得し、IDに基づいてページに情報をレンダリングすることです。したがって、画像 4 をクリックして新しいページに ID を渡すと、json ファイルから画像 4 のデータを表示したいと考えます。いくつかの異なるフェッチ設定、さらには axios 設定を試しましたが、完全に迷っています。 useParams を実装する必要がありますか? params.id?ありがとう!
import React, { useState, useEffect } from 'react' import { Link, useParams } from 'react-router-dom' 「./data.json」からデータをインポートします デフォルト関数 Foodinfo() をエクスポート { const params = useParams() const [アイテム, setItem] = useState(); useEffect(() => { fetch('/data.json') .then(response =>response.json()) .then(data => console.log(data)); }) 戻る () }食事情報
<「/」へのリンク> <ボタン>メニューボタン> リンク>
フィルタリングのために data.json にアクセスする
URL 経由で渡された
id
に基づいて、JSON ファイル
から項目をロードしたいようです。data.json
ファイルをコンポーネントに直接インポートしたため、fetch
またはaxios
を使用してリクエストする必要はありません。これはコンポーネント内に変数data
としてすでに存在します。したがって、URL から取得したid
パラメーターに基づいてデータをフィルターし、関連オブジェクトを使用してitem
ステータスを設定できます。これは、問題を解決するために
Foodinfo
コンポーネントを更新する方法です:useParams
を使用して、URL からid
を取得するだけです。params.id
は文字列型
であり、JSON ファイルのデータであるため、
idを整数として解析します。 IDとしての番号。
id
と同じitem
を見つけます。setItem
を項目の状態に設定します。
最後に、コンポーネント内でプロジェクト情報をレンダリングします。
リーリー