⊗jsrtPmRtADA 34 of 47 menu

การเพิ่มข้อมูลด้วยเมธอด action ใน React Router

ในบทเรียนนี้ เราจะทำความรู้จักกับเมธอด action ของออบเจ็กต์เส้นทาง (route) เมธอดนี้ จะถูกเรียกเมื่อแอปพลิเคชันส่ง คำขอ HTTP ประเภท POST, PUT, PATCH หรือ DELETE (นอกจาก GET) มายังเส้นทางของคุณ

เริ่มต้นด้วยการนำเข้าฟังก์ชันสำหรับสร้าง สินค้า ซึ่งเราเขียนไว้ในบทเรียนที่แล้ว มาไว้ในไฟล์ root.jsx ของเรา:

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

ตอนนี้เราจำเป็นต้องสร้างฟังก์ชัน action ที่ React Router จะเรียกใช้ เมื่อคลิกปุ่มเพิ่มสินค้า โดยจัดวางมันไว้หลังฟังก์ชัน loader:

export async function action() { const product = await createProduct(); return { product }; }

มาเปิดไฟล์ main.jsx และนำเข้า action:

import Root, { loader as rootLoader, action as rootAction } from './routes/root';

และตั้งค่าเป็นค่า ของเมธอด action สำหรับออบเจ็กต์เส้นทาง คอมโพเนนต์ Form จะป้องกันไม่ให้เบราว์เซอร์ ส่งคำขอไปยังเซิร์ฟเวอร์เมื่อกดปุ่ม แต่จะเรียกไปยังเมธอด action ของเส้นทางเรา นี่คือวิธีการทำงานที่น่าสนใจ ของการกำหนดเส้นทางฝั่งไคลเอ็นต์ด้วย React Router:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, loader: rootLoader, action: rootAction, children: [ { path: 'products/:productId', element: <Product />, }, ], }, ]);

มาเปิดแอปพลิเคชันของเรากัน เปิดแท็บ 'แอปพลิเคชัน' (Application สำหรับ Chrome) บน Developer Tools ในบรรดาประเภท ที่เก็บข้อมูลต่างๆ ให้คลิกที่ indexedDB ที่นี่เรา สนใจ localforage ตอนนี้เมื่อคลิกที่ ปุ่มเพิ่มสินค้าในแอปพลิเคชันของเรา และรีเฟรชที่เก็บ localforage หลังคลิก เราจะเห็นว่าใน keyvaluepairs ภายในอาร์เรย์ products มีการเพิ่มออบเจ็กต์ที่มี id ต่างกันเข้ามา ยินดีด้วย!!! นั่นหมายความว่าในที่เก็บข้อมูลของเรา มีการสร้างเรคอร์ดขึ้น! แน่นอน ว่ารายการในแอปพลิเคชันของเราก็เพิ่มขึ้นด้วย คำแนะนำ: อย่าลืมล้างข้อมูล ที่บันทึกไว้ของหน้านี้ในแท็บ 'Storage' ใน Application ในภายหลัง

นำแอปพลิเคชันที่คุณสร้างไว้ใน แบบฝึกหัดบทเรียนก่อนหน้ามา ใช้ เนื้อหาจากบทเรียน สร้างฟังก์ชัน action เพิ่มลงในออบเจ็กต์ เส้นทางหลัก (root route) เป็นเมธอด action

ไทย
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ʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ