進行中のクエリのクエリ変数を何らかの方法で変更することは可能ですか? 私の考えは、表示されたアイテムの数を という変数を使用してルート状態に保存しているということですpageSize
。ユーザーが1つのアイテムを開いてブラウザで戻るボタンを押すと、以前に見たページが正確に表示されます.しかし、ルート状態はリフレッシュ中にも持続するので、リッスンしたいのですがonReadyStateChange
、イベントが発生した場合は初期CACHE_RESTORE_FAILED
に変更したいですpageSize
サイズ。Route レベルでこの変更を何とか聞くことは可能ですか?
@chris コメントの後、いくつかのコードを追加します。
ルート: ルート状態から pageSize を取得する方法を確認できます
<Route
path=":username"
prepareParams={(params, { location }) => {
const relayParams = params;
if(location.state && location.state.pageSize) {
relayParams.pageSize = location.state && location.state.pageSize;
}
return relayParams;
}}
component={ProductList}
queries={UserQuery}
/>
ProductList コードを表示する必要はありません。今のところ、接続をレンダリングするだけです。アイデアは簡単です。製品リスト ページを開き、[表示] を数回クリックすると、pageSize 番号が 20 から 100 に増加します。ユーザーは製品番号 99 をクリックし、私は彼に製品を表示します。前に見た。それは素晴らしいです、ルート状態は何度も記憶されました。しかし、ユーザーがブラウザで更新をクリックした後、ルート状態も保持されるため、最初の 100 個の製品を取得するためにクエリを実行していますが、それは多すぎます。イベントをリッスンしたいのですが、製品がローカル メモリに見つからない場合 (env が切り替えられたか、ページが更新された場合)、変数を更新して最初の 20 のみを取得したいと考えています。