私はリアクションルートのデータアクセスに関して標準的な慣行に苦しんでいました。ここでは基本的な例である:リアクションルートとRedux非同期データリクエスト
これはデフォルトのストアです:
State: {
invoiceNumbers: [],
customers: [],
invoiceDetails: []
}
私は請求書一覧ページをロードするとき、私は:
- ロードすべての請求書番号(AJAXリクエスト)
- ロードすべてのお客様(Ajaxリクエスト)
請求書をクリックすると、反応ルートを使用して請求書/ {123}ページ。特定の請求書IDの顧客コレクションと請求書の詳細が必要です。混乱の
ポイント:
1)I新しいページへのルート、私の店はまだ[]顧客が含まれており、invoicenumber []が、ルートがないので、私はそれらへのアクセスを持っていない場合にはストア関連の小道具do?ですから、単に顧客の状態を返すgetCustomersアクションクリエイターを作成するだけです。これは正しいとは思わない。
2.)I アクションクリエイターを作成するには... loadCustomers()...は既にストアにあるものを返しますが、空の場合は、顧客にストアをロードするためのajaxリクエストを行います。 。しかしactionsCreators は既存の店舗にアクセスできないので、店舗が空であるかどうかをどのように知っていますか?彼らは減速機を呼び出すことができます、私は正しいですか?どうすればこれを達成できますか?
3.)請求書の詳細が必要な場合は、ajaxリクエストを作成してから、invoiceDetails []コレクションにデータを保存します。請求書の詳細ページにルーティングすると、そのページに1つのinvoiceDetailレコードだけが必要ですが、別の請求書の詳細ページに移動すると、そのデータがそのinvoiceDetailsで利用可能でない場合にのみ、 ]コレクション。
質問: 1.)上記で説明したように、アクション作成者loadCustomers()を作成するにはどうすればよいですか。
2.)経路を設定すると、ストア内の既存のデータをコンポーネントに正しく取得する方法を教えてください。
3.)回収したinvoiceDetailレコードを基本的に 'キャッシュ'して、必要に応じて再利用するにはどうすればよいですか?
ご協力いただきありがとうございます。ここで明確なベストプラクティスをご提供いただけます。
あなたはreduxのドキュメントを見ましたか?あなたは非同期呼び出しを行うミドルウェアが必要です、可能なミドルウェアが含まれています:redux-thunk、redux-saga – niceman