Fetcherの使用
Fetcherは、ナビゲーションを行わずに、複数同時データのやり取りを必要とする複雑で動的なユーザーインターフェースを作成するのに役立ちます。
Fetcherは独自の独立した状態を追跡し、データの読み込み、データの変更、フォームの送信、ローダーやアクションとの一般的なやり取りに使用できます。
アクションの呼び出し
Fetcherの最も一般的なケースは、アクションにデータを送信して、ルートデータの再検証をトリガーすることです。次のルートモジュールを考えてみましょう。
1. アクションの追加
まず、Fetcherが呼び出すためのアクションをルートに追加します。
2. Fetcherの作成
次に、Fetcherを作成し、それを含むフォームをレンダリングします。
3. フォームの送信
ここでフォームを送信すると、Fetcherはアクションを呼び出し、ルートデータを自動的に再検証します。
4. ペディング状態のレンダリング
Fetcherは非同期処理中に状態を利用可能にするため、ユーザーが操作した瞬間にペディングUIをレンダリングできます。
5. 楽観的UI
フォームには次の状態をすぐにレンダリングするのに十分な情報がある場合があります。fetcher.formData
を使用してフォームデータにアクセスできます。
6. Fetcherデータと検証
アクションから返されたデータは、fetcherのdata
プロパティで使用できます。これは主に、失敗した変更に対してユーザーにエラーメッセージを返すのに役立ちます。
データの読み込み
Fetcherのもう1つの一般的なユースケースは、コンボボックスなどに対してルートからデータを読み込むことです。
1. 検索ルートの作成
非常に基本的な検索を含む次のルートを考えてみましょう。
2. コンボボックスコンポーネントへのFetcherのレンダリング
- アクションは、上記で作成したルート "/search-users" を指します。
- 入力の名前は、クエリパラメータと一致する "q" です。
3. 型推論の追加
型のみをインポートするためにimport type
を使用してください。
4. データのレンダリング
フォームを送信して結果を確認するには、「Enter」キーを押す必要があることに注意してください。
5. ペディング状態のレンダリング
6. ユーザー入力での検索
Fetcherはfetcher.submit
を使用してプログラムで送信できます。
入力イベントのフォームがfetcher.submit
の最初の引数として渡されることに注意してください。Fetcherはそのフォームを使用してリクエストを送信し、その属性を読み取り、要素からデータをシリアル化します。