⊗jsrtPmRtAL 42 of 47 menu

การเน้นลิงก์ที่ใช้งานอยู่ใน React Router

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

เริ่มแรกให้เข้าไปที่หน้าหลัก เพิ่ม 4 ผลิตภัณฑ์ ลงในรายการ และสำหรับแต่ละรายการให้ป้อนข้อมูล ตั้งชื่ออะไรก็ได้ให้พวกเขา

คอมโพเนนต์ NavLink จะช่วยเรา ในการเน้นลิงก์ที่ใช้งานอยู่ นี่คือประเภทย่อยของ คอมโพเนนต์ Link ที่รู้จัก สถานะของข้อมูล โดยปกติจะใช้ เมื่อสร้างเมนูนำทาง

มาเปิด root.jsx และนำเข้า NavLink (อย่าลืมลบการนำเข้า Link ออก มิฉะนั้น React อาจจะเตือน เพราะเราไม่ได้ใช้มันอีกต่อไป):

import { NavLink } from 'react-router-dom';

จากนั้นในเลย์เอาต์ ให้เปลี่ยนคอมโพเนนต์ Link เป็น NavLink:

<NavLink key={product.id} to={`products/${product.id}`}> {product.name ? product.name : <i>unnamed</i>} </NavLink>

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

<NavLink key={product.id} to={`products/${product.id}`} className={({ isActive, isPending }) => isActive ? 'active' : isPending ? 'loading' : '' } > {product.name ? product.name : <i>Unnamed</i>} </NavLink>

สิ่งที่เหลืออยู่คือเพิ่มสไตล์สำหรับ คลาส active และ loading ลงในไฟล์ css ของเรา:

a.active { font-weight: bold; color: brown; } a.loading { color: gray; }

เสร็จแล้ว! ทีนี้ลองคลิกที่ผลิตภัณฑ์ ในรายการดู

นำแอปพลิเคชันที่คุณสร้างขึ้นใน แบบฝึกหัดของบทเรียนที่ผ่านๆ มา ใช้ความรู้ จากบทเรียนนี้ ดำเนินการ เน้นลิงก์ที่ใช้งานอยู่ในรายการ นักศึกษา เพื่อให้ผู้ใช้เข้าใจว่า กำลังดูข้อมูลของนักศึกษาคนไหนอยู่

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