ใช้. push เพื่ออัปเดตคอมโพเนนต์ [ซ้ำ]
Nov 21 2020
ไม่สามารถอัปเดต dom หลังจากใช้. push array object ได้รับการอัปเดต
const [people, setPeople] = React.useState(data);
const addItem = () => {
const itemName = document.querySelector('.input').value;
const i = people.length + 1;
people.push({
id: i,
name: itemName
});
setPeople(people);
console.log(people);
}
คำตอบ
ThalesKenne Nov 21 2020 at 00:01
นั่นเป็นเพราะการพุชเปลี่ยนสถานะดั้งเดิมและคุณไม่ควรเปลี่ยนสถานะด้วยตนเองในการตอบสนอง
ให้สร้างสำเนาตื้นของสถานะของคุณแทนจากนั้นกดแล้วรีเซ็ตสถานะด้วยอาร์เรย์ที่เปลี่ยนแปลง
const [people, setPeople] = React.useState(data);
const addItem = () => {
const itemName = document.querySelector('.input').value;
const i = people.length + 1;
const newPeople = [...people]; // Create a copy
newPeople.push({
id: i,
name: itemName
});
setPeople(newPeople);
console.log(newPeople);
}
RajithaUdayanga Nov 21 2020 at 00:04
const addItem = () => {
const itemName = document.querySelector('.input').value;
const i = people.length + 1;
// crate new people
const newPeople = {
id: i,
name: itemName
};
// concat to existing peoples and set to state
setPeople(prevState => prevState.concat(newPeople));
console.log(people);
}