รายชื่อผู้ขายใน Redux

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

เปิดแอปพลิเคชันสินค้าของเรา และในนั้น มีโฟลเดอร์ sellers สร้างไฟล์ SellersList.jsx ในโฟลเดอร์นี้ ที่นี่เราจะใช้ useSelector, Link และ selectAllSellers ซึ่งเราจะเขียนโค้ด ใน sellersSlice.js ภายหลัง:

sellers/SellersList.jsximport { useSelector } from 'react-redux'
import { Link } from 'react-router-dom'
import { selectAllSellers } from './sellersSlice'

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

sellers/SellersList.jsxexport const SellersList = () => {
  const sellers = useSelector(selectAllSellers)
  const sellersToRender = sellers.map((seller) => (
    <li key={seller.id}>
      <Link to={`/sellers/${seller.id}`}>{seller.name}</Link>
    </li>
  ))

  return (
    <div>
      <h2>Sellers:</h2>

      <ul>{sellersToRender}</ul>
    </div>
  )
}

จากนั้นเข้าไปที่ไฟล์ sellersSlice.js และทำคล้าย กับ selectors ใน productsSlice.js สร้าง selector สองตัวที่ส่วนท้ายไฟล์ หลังการส่งออก reducer:

sellers/sellersSlice.jsexport const selectAllSellers = (state) => state.sellers

export const selectSellerById = (state, sellerId) =>
state.sellers.find((seller) => seller.id === sellerId)

ตอนนี้เราจำเป็นต้องกำหนดเส้นทางสำหรับ หน้ารายชื่อ โดยเปิดไฟล์ App.jsx และในอาร์เรย์ของเส้นทางย่อย children เพิ่มอ็อบเจ็กต์อีกหนึ่งตัว (อย่าลืมนำเข้า component SellersList):

App.jsx{
  path: '/sellers',
  element: <SellersList />,
},

เพื่อให้ลิงก์ 'Sellers' ในเมนูทำงาน เข้าไปที่ไฟล์ root.jsx (นาน มาแล้ว ... ) และเปลี่ยนแท็ก a เป็น element NavLink:

app/root.jsx<NavLink to="/sellers" end>
  Sellers
</NavLink>

และสุดท้าย เพื่อให้ในเมนูของเรา มีการเน้นลิงก์ที่ใช้งานอยู่ และ เข้าใจได้ว่าเราอยู่บนหน้าไหน เราเพิ่มสไตล์ใน index.css:

index.cssnav a.active {
  color: purple;
}

มาเรียกใช้แอปพลิเคชันของเรา ตอนนี้เราสามารถ เข้าไปที่หน้าผู้ขายได้ โดยคลิกที่ 'Sellers' ในเมนู แน่นอนว่า ต้องคลิกที่ 'Products' ในเมนูก่อน มิฉะนั้น สินค้าของเราจะไม่ถูกโหลด ในบทเรียน ถัดไป เราจะสร้างหน้าให้กับแต่ละผู้ขาย และจบการศึกษาเนื้อหาบทเรียนนี้ใน Redux

Задание 1

เปิดแอปพลิเคชันนักเรียนของคุณ หลังจากศึกษาบทเรียนแล้ว ในโฟลเดอร์ teachers สร้างไฟล์ TeachersList.jsx โดยใช้ คอมโพเนนต์นี้ คุณจะแสดงรายชื่อ ครูผู้สอน นำเข้า คอมโพเนนต์และ hooks ที่จำเป็น

Задание 2

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

Задание 3

ในตอนท้ายของไฟล์ teachersSlice.js สร้าง ฟังก์ชัน selector คู่หนึ่ง selectAllTeachers และ selectTeacherById ตามที่แสดงในบทเรียน

Задание 4

ใน App.jsx เชื่อมต่อเส้นทางย่อยอีกหนึ่งเส้นทาง สำหรับหน้าครูผู้สอน

Задание 5

ในไฟล์ root.jsx ในเมนูสำหรับ 'Teachers' เปลี่ยนแท็ก a เป็น NavLink ตามที่แสดง ในบทเรียน ทำให้ลิงก์ที่ใช้งานอยู่ใน เมนูโดดเด่นขึ้น โดยเพิ่ม สไตล์สำหรับสิ่งนี้ใน index.css