React Routerでのデータ追加
前回のレッスンでは、ローダーを準備し、 特定のルートからのデータをストアから アンロードしました。さて、私たちの アプリケーションを例に、新しい製品を 追加し、そのデータをストアに書き込む 方法を見てみましょう。
ファイル root.jsx を開き、
レイアウトに新しい製品を追加するための
ボタンを nav の前に追加しましょう。
フォームタグで囲みます。また、このボタンと
リストをもう一つのdivで #menu を
持たせて囲みます。レイアウトは次のように
なります:
return (
<div id="main">
<div id="menu">
<form method="post">
<button type="submit">製品を追加</button>
</form>
{products.length ? (
<nav>
{products.map((product) => (
<Link key={product.id} to={`products/${product.id}`}>
{product.name ? product.name : <i>名前なし</i>}
</Link>
))}
</nav>
) : (
<p>
<i>製品がありません...</i>
</p>
)}
</div>
<div id="product">
<Outlet />
</div>
</div>
);
開発者パネルの 'ネットワーク'
タブを開き、私たちのボタンをクリック
すると、サーバーへのエラーリクエストが
表示されます。React Routerを使用して、
再度クライアントサイドのルーティングを
活用し、サーバーへのリクエストを
排除します。
そのために、タグ form を
React Routerのコンポーネント Form
に変更しましょう。まず Form の
インポートを追加します:
import { Form } from 'react-router-dom';
次に、コードスニペット内の
form タグを置き換えます:
<Form method="post">
<button type="submit">製品を追加</button>
</Form>
アプリケーションをリロードし、もう一度 開発者パネルを確認してください。製品追加 ボタンをクリックしてみます - これでサーバー へのリクエストはなくなっています(エラーは 今のところ気にしないでください)。
前回のレッスンの課題で作成した
アプリケーションを使用してください。
レッスンの資料を参考に、関数
Root のマークアップを修正し、
form タグ内に学生を追加する
ボタンを追加してください。ボタンを
クリックしたときにサーバーへの
リクエストが行われることを確認
してください。
次に、タグ form を
コンポーネント Form に
置き換えてください。学生追加ボタン
をクリックしたときにサーバーへの
リクエストが送信されないことを
確認してください。