การเพิ่มแบบรีแอคทีฟให้กับอาร์เรย์ของออบเจ็กต์ใน React
ทีนี้ เรามาศึกษาเรื่องความเป็นรีแอคทีฟของอาร์เรย์
ออบเจ็กต์กัน ในกรณีนี้ เราจะต้อง
ทำการเปลี่ยนแปลงใดๆ
โดยอ้างอิงถึงองค์ประกอบต่างๆ ผ่าน
id
ซึ่งเก็บไว้ภายในออบเจ็กต์นั้นๆ เอง
มาลองทำกัน สมมติว่าเรามี อาร์เรย์ของออบเจ็กต์ดังต่อไปนี้:
const initNotes = [
{
id: 'GYi9G_uC4gBF1e2SixDvu',
prop1: 'value11',
prop2: 'value12',
prop3: 'value13',
},
{
id: 'IWSpfBPSV3SXgRF87uO74',
prop1: 'value21',
prop2: 'value22',
prop3: 'value23',
},
{
id: 'JAmjRlfQT8rLTm5tG2m1L',
prop1: 'value31',
prop2: 'value32',
prop3: 'value33',
},
];
มาแสดงผลแต่ละองค์ประกอบของ
อาร์เรย์ของเราในแท็ก
li แยกกัน:
function App() {
const [notes, setNotes] = useState(initNotes);
const result = notes.map(note => {
return <li key={note.id}>
<span>{note.prop1}</span>
<span>{note.prop2}</span>
<span>{note.prop3}</span>
</li>;
});
return <div>
<ul>
{result}
</ul>
</div>;
}
สร้างปุ่ม เมื่อคลิกที่ปุ่มนั้น
จะเพิ่มองค์ประกอบใหม่
ที่ส่วนท้ายของอาร์เรย์ ดังนั้นจึงเพิ่ม
li ใหม่ที่ส่วนท้ายของแท็ก
ul
สร้างอินพุตสามช่องและปุ่มหนึ่งปุ่ม เมื่อคลิก
ที่ปุ่ม ให้สร้าง
li ใหม่จากข้อมูลในอินพุต
ที่ส่วนท้ายของแท็ก
ul