ອະທິບາຍ UI
React ແມ່ນ JavaScript library ສຳລັບສະແດງຜົນໜ້າຕ່າງຜູ້ໃຊ້ (UI). UI ແມ່ນເຮັດມາຈາກຊີ້ນສ່ວນນ້ອຍໆເຊັ່ນ: ປຸ່ມກົດ, ຂໍ້ຄວາມ, ແລະ ຮູບພາບ. React ຊ່ວຍໃຫ້ທ່ານລວມມັນເຂົ້າກັນເປັນ component ທີ່ໃຊ້ຊໍ້າ ແລະ ຊ້ອນກັນຫຼາຍໆຊັ້ນໄດ້. ຕັ້ງແຕ່ເວັບໄຊໄປຈົນເຖິງແອັບພິເຄຊັ່ນເທິງມືຖື, ທຸກຢ່າງເທິງໜ້າຈໍແມ່ນສາມາດແຕກຍ່ອຍເປັນ component ໄດ້. ໃນບົດນີ້, ທ່ານຈະໄດ້ຮຽນກ່ຽວກັບການສ້າງ, ການປັບແຕ່ງ ແລະ ສະແດງ React component ແບບມີເງື່ອນໄຂ.
In this chapter
- ວິທີຂຽນ React component ທຳອິດຂອງທ່ານ
- ເມືອໃດ ແລະ ວິທີການສ້າງຫຼາຍຟາຍ component
- ວິທີການເພີ່ມ markup ໃສ່ JavaScript ດ້ວຍ JSX
- ວິທີໃຊ້ວົງປີກກາກັບ JSX ເພື່ອເຂົ້າເຖິງ function JavaScript ຈາກ component ຂອງທ່ານ
- ວິທີການປັບແຕ່ງ component ດ້ວຍ props
- ວິທີການສະແດງ component ແບບມີເງື່ອນໄຂ
- ວິທີການສະແດງຫຼາຍ component ພ້ອມກັນ
- ວິທີການຫຼີກເວັ້ນຂໍ້ຜິດພາດໂດຍການຮັກສາໃຫ້ component pure ທີ່ສຸດ
Component ທຳອິດຂອງທ່ານ
ແອັບພິເຄຊັ່ນ React ສ້າງຂຶ້ນຈາກການແຍກສ່ວນຂອງ UI ທີ່ເອີ້ນວ່າ components. React component ແມ່ນ JavaScript function ທີ່ສາມາດໂຮຍໜ້າດ້ວຍ markup. Component ອາດມີຂະໜາດນ້ອຍເທົ່າປຸ່ມກົດ, ຫຼື ໃຫຍ່ເທົ່າກັບທັງໝົດໜ້າ. ນີ້ແມ່ນ Component Gallery
ທີ່ສະແດງຜົນ component Profile
ສາມລາຍການ:
function Profile() { return ( <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" /> ); } export default function Gallery() { return ( <section> <h1>ນັກວິທະຍາສາດທີ່ໜ້າປະຫຼາດໃຈ</h1> <Profile /> <Profile /> <Profile /> </section> ); }
Ready to learn this topic?
ອ່ານ Component ທຳອິດຂອງທ່ານ ເພື່ອຮຽນຮູ້ວິທີການປະກາດ ແລະ ນຳໃຊ້ React component.
Read Moreການ Import ແລະ Export component
ທ່ານສາມາດປະກາດຫຼາຍ Component ໃນໜຶ່ງຟາຍ, ແຕ່ຟາຍຂະໜາດໃຫຍ່ສາມາດເຮັດໃຫ້ຍາກໃນການຊອກຫາ. ເພື່ອແກ້ໄຂບັນຫານີ້, ທ່ານສາມາດ export component ເປັນຟາຍຂອງມັນເອງ, ແລ້ວ import component ນັ້ນຈາກຟາຍອື່ນ:
import Profile from './Profile.js'; export default function Gallery() { return ( <section> <h1>ນັກວິທະຍາສາດທີ່ໜ້າປະຫຼາດໃຈ</h1> <Profile /> <Profile /> <Profile /> </section> ); }
Ready to learn this topic?
ອ່ານ ການ Import ແລະ Export Components ເພື່ອຮຽນຮູ້ວິທີການແຍກ component ເຂົ້າໄປໃນຟາຍຂອງຕົນເອງ.
Read Moreການຂຽນ markup ດ້ວຍ JSX
ແຕ່ລະ React component ແມ່ນຟັງຊັ່ນ JavaScript ທີ່ອາດມີ markup ບາງສ່ວນທີ່ React ສະແດງຜົນໃນບາວເຊີ. Component React ໃຊ້ syntax extension ເອີ້ນວ່າ JSX ເພີ່ມສະແດງ markup ນັ້ນ. JSX ຄ້າຍຄື HTML ຫຼາຍ, ແຕ່ເຂັ້ມງວດກວ່ານ້ອຍໜຶ່ງ ແລະ ສາມາດສະແດງຂໍ້ມູນ dynamic ໄດ້.
ຖ້າເຮົາວາງ markup HTML ທີ່ມີຢູ່ລົງໃນ React component, ມັນຈະບໍ່ເຮັດວຽກສະເໝີໄປ:
export default function TodoList() { return ( // ນີ້ມັນບໍ່ສາມາດເຮັດວຽກໄດ້ເລີຍ! <h1>Todos ຂອງ Hedy Lamarr</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" > <ul> <li>ປະດິດໄຟສັນຍານຈາລະຈອນ <li>ຊ້ອມສາກໜັງ <li>ປັບປຸງເຕັກໂນໂລຊີ spectrum </ul>
ຖ້າທ່ານມີ HTML ແບບນີ້, ທ່ານສາມາດແປງໄດ້ໂດຍການໃຊ້ converter:
export default function TodoList() { return ( <> <h1>Todos ຂອງ Hedy Lamarr</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo" /> <ul> <li>ປະດິດໄຟສັນຍານຈາລະຈອນ</li> <li>ຊ້ອມສາກໜັງ</li> <li>ປັບປຸງເຕັກໂນໂລຊີ spectrum</li> </ul> </> ); }
Ready to learn this topic?
ອ່ານ ການຂຽນ Markup ດ້ວຍ JSX ເພື່ອຮຽນຮູ້ວິທີການຂຽນ JSX ທີ່ຖືກຕ້ອງ.
Read MoreJavaScript ໃນ JSX ດ້ວຍວົງປີກກາ
JSX ໃຫ້ທ່ານຂຽນ markup ຄ້າຍ HTML ໃນຟາຍ JavaScript, ຮັກສາ logic ການສະແດງຜົນ ແລະ ເນື້ອຫາໃນບ່ອນດຽວ. ບາງເທື່ອທ່ານອາດຈະຕ້ອງເພີ່ມ logic JavaScript ໜ້ອຍໜຶ່ງ ຫຼື ອ້າງອີງ dynamic property ພາຍໃນ markup ນັ້ນ. ໃນສະຖານະການນີ້, ທ່ານສາມາດໃຊ້ວົງປີກາໃນ JSX ຂອງທ່ານເພື່ດ “ເປີດໜ້າຕ່າງ” ເປັນ JavaScript:
const person = { name: 'Gregorio Y. Zara', theme: { backgroundColor: 'black', color: 'pink' } }; export default function TodoList() { return ( <div style={person.theme}> <h1>Todos ຂອງ {person.name} </h1> <img className="avatar" src="https://i.imgur.com/7vQD0fPs.jpg" alt="Gregorio Y. Zara" /> <ul> <li>ປັບປຸງວີດີໂອໂຟນ</li> <li>ກຽມບັນຍາຍການບິນ</li> <li>ເຮັດວຽກກັບເຄື່ອງຈັກທີ່ໃຊ້ແອວກໍຮໍເປັນເຊື້ອໄຟ</li> </ul> </div> ); }
Ready to learn this topic?
ອ່ານ JavaScript ໃນ JSX ດ້ວຍວົງປີກກາ ເພື່ອຮຽນຮູ້ກ່ຽວກັບການເຂົ້າເຖິງຂໍ້ມູນ JavaScript ຈາກ JSX.
Read Moreສົ່ງຜ່ານ props ໃສ່ component
Component React ໃຊ້ props ເພື່ອສື່ສານລະຫວ່າງກັນ. ທຸກໆ parent component ສາມາດສົ່ງບາງຂໍ້ມູນຫາ child component ມັນເອງໄດ້ໂດຍການໃຊ້ props. Props ອາດເຮັດໃຫ້ທ່ານນຶກເຖິງ HTML attribute, ແຕ່ທ່ານສາມາດສົ່ງຄ່າ JavaScript ຫຍັງກໍໄດ້ຜ່ານມັນ, ປະກອບມີ objects, arrays, functions ແລະ JSX!
import { getImageUrl } from './utils.js' export default function Profile() { return ( <Card> <Avatar size={100} person={{ name: 'Katsuko Saruhashi', imageId: 'YfeOqp2' }} /> </Card> ); } function Avatar({ person, size }) { return ( <img className="avatar" src={getImageUrl(person)} alt={person.name} width={size} height={size} /> ); } function Card({ children }) { return ( <div className="card"> {children} </div> ); }
Ready to learn this topic?
ອ່ານ ການສົ່ງຜ່ານ Props ໄປຫາ Component ເພື່ອຮຽນຮູ້ວິທີການສົ່ງຜ່ານ ແລະ ອ່ານ props.
Read Moreການສະແດງຜົນແບບມີເງື່ອນໄຂ
Component ຂອງທ່ານສ່ວນຫຼາຍຈະສະແດງສິ່ງຕ່າງໆຂຶ້ນກັບແຕ່ລະເງື່ອນໄຂທີ່ແຕກຕ່າງກັນ. ໃນ React, ທ່ານສາມາດສະແດງ JSX ຢ່າງມີເງື່ອນໄຂໂດຍການໃຊ້ syntax JavaScript ເຊັ່ນ if
statements, &&
, ແລະ ? :
operators.
ໃນຕົວຢ່າງນີ້, JavaScript &&
operator ແມ່ນໃຊ້ເພື່ອສະແດງເຄື່ອງໝາຍຕິກຕາມເງື່ອນໄຂ:
function Item({ name, isPacked }) { return ( <li className="item"> {name} {isPacked && '✔'} </li> ); } export default function PackingList() { return ( <section> <h1>ລາຍການຂອງ Sally Ride</h1> <ul> <Item isPacked={true} name="ຊຸດອາວະກາດ" /> <Item isPacked={true} name="ໝວກກັນກະທົບທີ່ມີໃບສີທອງ" /> <Item isPacked={false} name="ຮູບຂອງແທັມ" /> </ul> </section> ); }
Ready to learn this topic?
ອ່ານ ການສະແດງຜົນຕາມເງື່ອນໄຂ ເພື່ອຮຽນຮູ້ວິທີຕ່າງໆໃນການສະແດງເນື້ອຫາຕາມເງື່ອນໄຂ.
Read Moreການສະແດງ lists
ທ່ານມັກຈະຕ້ອງການສະແດງ component ຄ້າຍກັນຈາກຂໍ້ມູນ collection. ທ່ານສາມາດໃຊ້ JavaScript filter()
ແລະ map()
ກັບ React ເພື່ອ filter ແລະ ປ່ຽນ array ຂອງຂໍ້ມູນໄປເປັນ array ຂອງ component.
ສຳລັບ array ແຕ່ລະລາຍການ , ທ່ານຈະຕ້ອງລະບຸ key
. ສ່ວນຫຼາຍ, ທ່ານຈະຕ້ອງການ ID ຈາກ database ເປັນ key
. Key ເຮັດໃຫ້ React ຕິດຕາມຕຳແໜ່ງຂອງແຕ່ລະລາຍການໃນ list ເຖິງວ່າ ລາຍການຈະປ່ຽນໄປກໍ່ຕາມ.
import { people } from './data.js'; import { getImageUrl } from './utils.js'; export default function List() { const listItems = people.map(person => <li key={person.id}> <img src={getImageUrl(person)} alt={person.name} /> <p> <b>{person.name}:</b> {' ' + person.profession + ' '} ເປັນທີ່ຮູ້ຈັກສຳຫຼັບ {person.accomplishment} </p> </li> ); return ( <article> <h1>ນັກວິທະຍາສາດ</h1> <ul>{listItems}</ul> </article> ); }
Ready to learn this topic?
ອ່ານ ການສະແດງ Lists ເພື່ອຮຽນຮູ້ວິທີສະແດງ list ຂອງ component ແລະ ວິທີການເລືອກ key.
Read Moreການຮັກສາ components ໃຫ້ pure
ບາງຟັງຊັ່ນ JavaScript ແມ່ນ pure. Pure function:
- ຄຳນຶງເຖິງເລື່ອງໂຕມັນເອງ. ມັນບໍ່ມີການປ່ຽນແປງ object ຫຼື ຕົວປ່ຽນໃດໆທີ່ມີຢູ່ກ່ອນທີ່ມັນຈະຖືກເອີ້ນໃຊ້.
- input ດຽວກັນ, output ດຽວກັນ. ຍ້ອນ input ດຽວກັນ, pure function ຄວນຈະ return ຜົນໄດ້ຮັບດຽວກັນຢູ່ສະເໝີ.
ໃຫ້ຂຽນ Component ຂອງທ່ານໃຫ້ເປັນຟັງຊັ່ນລ້ວນໆເທົ່ານັ້ນຢ່າງເຄັ່ງຄັດ, ທ່ານສາມາດຫຼີກຫຼ່ຽງ bug ທີ່ເຮັດໃຫ້ວຸ້ນວາຍ ແລະ ພຶດຕິກຳທີ່ບໍ່ຄາດຄິດເມື່ອ codebase ຂອງທ່ານໃຫຍ່ຂຶ້ນ. ນີ້ແມ່ນຕົວຢ່າງຂອງ component ທີ່ບໍ່ pure:
let guest = 0; function Cup() { // ບໍ່ດິ: ປ່ຽນຄ່າຕົວແປທີ່ມີຢູ່ກ່ອນ! guest = guest + 1; return <h2>ຊາສຳລັບແຂກ #{guest}</h2>; } export default function TeaSet() { return ( <> <Cup /> <Cup /> <Cup /> </> ); }
ທ່ານສາມາດເຮັດໃຫ້ component ນີ້ pure ໄດ້ ໂດຍການສົ່ງ prop ແທນທີ່ການແກ້ໄຂຕົວແປທີ່ມີຢູ່ແລ້ວ:
function Cup({ guest }) { return <h2>ຊາສຳລັບແຂກ #{guest}</h2>; } export default function TeaSet() { return ( <> <Cup guest={1} /> <Cup guest={2} /> <Cup guest={3} /> </> ); }
Ready to learn this topic?
ອ່ານ ຮັກສາໃຫ້ Component pure ເພື່ອຮຽນຮູ້ວິທີຂຽນ component ໃຫ້ pure, ແລະ ສາມາດຄາດເດົາຟັງຊັ່ນໄດ້.
Read Moreຕໍ່ໄປແມ່ນຫຍັງ?
ໄປທີ່ Component ທຳອິດຂອງທ່ານ ເພື່ອເລີ່ມອ່ານບົດນີ້ເທື່ອລະໜ້າ!
ຫຼຶ, ຖ້າທ່ານມີຄວາມຄຸ້ນເຄິຍກັບຫົວຂໍ້ເຫຼົ່ານີ້ແລ້ວ, ເປັນຫຍັງບໍ່ອ່ານ ການເພີ່ມ Interactivity?