action
ルートの action
は、データ変更やその他のアクションを処理するためのサーバー専用の関数です。ルートに対して GET
以外のリクエスト (DELETE
, PATCH
, POST
, または PUT
) が行われた場合、loader
が呼び出される前に action が呼び出されます。
action
は loader
と同じ API を持ちますが、呼び出されるタイミングが異なるだけです。これにより、データセットに関するすべてのものを単一のルートモジュールにまとめることができます。データの読み取り、データをレンダリングするコンポーネント、データの書き込みです。
URL に対して POST
が行われると、ルート階層内の複数のルートがその URL に一致します。UI を構築するためにすべてが呼び出されるローダーへの GET
とは異なり、1 つの action のみが呼び出されます。
インデックスルートにポストしたい場合は、action で ?index
を使用します: <Form action="/accounts?index" method="post" />
action url | ルート action |
---|---|
/accounts?index | app/routes/accounts._index.tsx |
/accounts | app/routes/accounts.tsx |
また、action プロパティのないフォーム (<Form method="post">
) は、レンダリングされているルートと同じルートに自動的にポストされることに注意してください。したがって、親ルートとインデックスルートを区別するために ?index
パラメータを使用するのは、インデックスルート自体以外の場所からインデックスルートにポストする場合にのみ役立ちます。インデックスルートからそれ自体にポストする場合、または親ルートからそれ自体にポストする場合は、<Form action>
を定義する必要はまったくありません。単に省略してください: <Form method="post">
。
以下も参照してください: