⊗jsrtPmRtDER 38 of 47 menu

Tạo tuyến đường để chỉnh sửa dữ liệu trong React Router

Ở bài học trước, chúng ta đã tạo một biểu mẫu để chỉnh sửa trong một thành phần React riêng biệt EditProduct.

Bây giờ hãy viết hàm trình tải cho tuyến đường mới ngay sau lệnh nhập và trước hàm EditProduct. Nó sẽ giống như trong product.jsx. Vào hàm sẽ được truyền các tham số URL và sau đó chúng ta sẽ lấy sản phẩm theo id của nó:

export async function loader({ params }) { const product = await getProduct(params.productId); return { product }; }

Hãy nhập getProduct từ forStorage.js:

import { getProduct } from '../forStorage';

Và bây giờ chúng ta sẽ mở main.jsx và nhập thành phần mà chúng ta đã tạo EditProduct và trình tải:

import EditProduct, { loader as editProductLoader } from './routes/edit';

Sau đó, thêm vào mảng children đối tượng tuyến đường cho chỉnh sửa ngay sau tuyến đường cho sản phẩm:

children: [ { path: 'products/:productId', element: <Product />, loader: productLoader, }, { path: 'products/:productId/edit', element: <EditProduct />, loader: editProductLoader, }, ],

Bây giờ hãy chạy ứng dụng, tạo một sản phẩm, nhấp vào nó, sau đó nhấp vào nút chỉnh sửa và chúng ta sẽ thấy biểu mẫu của chúng ta.

Chỉ có điều, chúng ta cần làm thêm để dữ liệu hiện tại được tải sẵn trong các trường của biểu mẫu trước khi chỉnh sửa. Để làm điều này, chúng ta hãy nhập vào edit.jsx hook useLoaderData:

import { Form, useLoaderData } from 'react-router-dom';

Và áp dụng nó để lấy dữ liệu từ trình tải trong hàm EditProduct. Hãy thêm nó trước lệnh return:

const { product } = useLoaderData();

Bây giờ hãy thêm vào mỗi thẻ input thuộc tính defaultValue với các giá trị tương ứng cho mỗi input. Ví dụ: input đầu tiên bây giờ sẽ trông như thế này:

<input placeholder="name" type="text" name="name" defaultValue={product.name} />

Đối với hai input còn lại, các giá trị sẽ lần lượt là 'product.cost''product.amount'. Tuy nhiên, hiện tại chúng ta chưa có dữ liệu trong biểu mẫu.

Hãy lấy ứng dụng mà bạn đã tạo trong các bài tập của các bài học trước. Sử dụng tài liệu của bài học, hãy tạo hàm loader trong edit.jsx cho tuyến đường chỉnh sửa dữ liệu sinh viên.

Thêm vào mảng children đối tượng tuyến đường để chỉnh sửa.

Thêm cho hàm EditStudent của bạn mã yêu cầu như trong bài học.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối