การเพิ่มข้อมูลใน React Router

ในบทเรียนที่ผ่านมา เราได้เตรียมโหลดเดอร์ และการดึงข้อมูลตามเส้นทางที่กำหนด จากที่เก็บข้อมูล คราวนี้มาทำความรู้จัก ผ่านตัวอย่างแอปพลิเคชันของเราว่าจะเพิ่ม สินค้าใหม่และบันทึกข้อมูลของมันลงใน ที่เก็บข้อมูลได้อย่างไร

มาเปิดไฟล์ root.jsx และเพิ่ม ปุ่มสำหรับเพิ่มสินค้าใหม่เข้าไปในเลย์เอาต์ ก่อน nav โดยครอบมันด้วยแท็กฟอร์ม นอกจากนี้ ให้เราครอบปุ่มและรายการของเราอีกทีด้วย div อีกอันที่มี #menu ตอนนี้เลย์เอาต์จะ มีลักษณะดังนี้:

routes/root.jsxreturn (
  <div id="main">
    <div id="menu">
      <form method="post">
        <button type="submit">add product</button>
      </form>
      {products.length ? (
      <nav>
        {products.map((product) => (
        <Link key={product.id} to={`products/${product.id}`}>
          {product.name ? product.name : <i>Unnamed</i>}
        </Link>
        ))}
      </nav>
      ) : (
      <p>
        <i>no products here ...</i>
      </p>
      )}
    </div>

    <div id="product">
      <Outlet />
    </div>
  </div>
);

หากตอนนี้เราเข้าไปที่แถบ 'เครือข่าย' ใน Developer Tools จากนั้นกดที่ ปุ่มของเรา เราจะเห็นคำขอเอกสารที่ผิดพลาด ไปยังเซิร์ฟเวอร์ ด้วย React Router เราจะใช้การกำหนดเส้นทาง ฝั่งไคลเอ็นต์อีกครั้ง เพื่อยกเว้นการร้องขอไปยังเซิร์ฟเวอร์

มาเปลี่ยนแท็ก form เป็นคอมโพเนนต์ Form ของ React Router กัน เริ่มด้วยการเพิ่ม การนำเข้า Form:

routes/root.jsximport { Form } from 'react-router-dom';

ตอนนี้มาแทนที่แท็ก form ในส่วนของโค้ด:

root.jsx<Form method="post">
  <button type="submit">add product</button>
</Form>

โหลดแอปพลิเคชันของเราอีกครั้งและดูที่ Developer Tools อีกที คราวนี้ลองกดปุ่มเพิ่ม สินค้า - ตอนนี้ไม่มีคำขอไปยังเซิร์ฟเวอร์แล้ว (ยังไม่ต้องสนใจข้อผิดพลาดที่ปรากฏ)

Задание 1

นำแอปพลิเคชันที่คุณสร้างไว้ใน แบบฝึกหัดจากบทเรียนที่ผ่านมา ใช้ เนื้อหาจากบทเรียน แก้ไขการแสดงผล ของฟังก์ชัน Root เพิ่มปุ่มสำหรับ เพิ่มนักเรียนในแท็ก form และตรวจสอบให้แน่ใจว่าหากกด ปุ่ม จะมีคำขอไปยังเซิร์ฟเวอร์เกิดขึ้น

Задание 2

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