⊗jsrxPmSDSSC 35 of 57 menu

Reduxでの状態構造の変更

私たちのReduxアプリケーションが外部サーバーと やり取りするために実装する最初のステップは、 アプリケーション起動時にサーバーに保存されている データを取得することです。しかしその前に、 アプリケーションにいくつかの変更を加えましょう。

商品アプリケーションを開き、その中にある ファイルproductsSlice.jsを開きます。 initialStateの定義に注目してください。 当初、商品スライスproductsSliceは、 商品データを持つオブジェクト(この場合は2つ)が 含まれた配列です。まず、これからサーバーから 読み込むため、initialStateからこれらを 削除する必要があります。次に、サーバーにAPI リクエストを送信するため、そのステータスを 把握することが重要になります。この2点を考慮し、 initialStateを変更しましょう。 これは、productsフィールド(最初は データはなく、空の配列のみ)、statuserrorを持つ単純なオブジェクトとします。 これでinitialStateのコードは少し 短くなります:

const initialState = { products: [], status: 'idle', error: null, }

ステータスは'idle'(待機中)と 設定しました。最初は何もリクエストを 送信しないためです。実際にはこれは変化し、 'loading'(読み込み中)、'succeeded'(成功)、 'failed'(失敗)などの値を取る可能性があります。 ステータスを表す名前は、自分にとって わかりやすいものを選択できることを 覚えておいてください。

コードを下にスクロールします。initialStateを 変更した後、レデューサー関数内でこの状態を 扱うコードも変更する必要があります。 productAddedのコードを見てみましょう:

state.push(action.payload)

これから新しい商品は、単純に商品用のstateに 追加するのではなく、そのプロパティ state.productsに追加します。 したがって、上記の行を以下に置き換えます:

state.products.push(action.payload)

同様に、レデューサーreactionClickedにも 同じ変更を加えます。以下の代わりに:

const currentProduct = state.find((product) => product.id === productId)

これからは以下になります:

const currentProduct = state.products.find((product) => product.id === productId)

レデューサーproductUpdatedのコードでも、 statestate.productsに 自分で置き換えてください。

学生アプリケーションを開いてください。 その中のファイルstudentsSlice.jsを 開いてください。 これからinitialStateが3つのプロパティ: studentsstatuserrorを持つようにします。 レッスンで示したように変更してください。

コードの下方にも適切な変更を加えてください。 3つのレデューサー関数のコード内で、 statestate.studentsに 置き換えてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否