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