下面的代码运行良好,并对子级进行重新渲染:
const [equip, setEquip] = useState({biAbt:[]});
const handleSet = (name, value) => {
setEquip({[name]: value});
}
但如果我尝试用一个对象设置状态,则没有呈现:
const [equip, setEquip] = useState({biAbt:[]});
const handleSet = (name, value) => {
let obj = equip;
obj[name] = value;
setEquip(obj);
}
我做错了什么?我需要向现有的状态对象添加或更新一个属性。
当您指定let obj = equip;
obj与上一个状态具有相同的引用时,react不会重新渲染,您可以这样做:
const handleSet = (name, value) => {
setEquip(equip => ({...equip, [name]: value}));
}
通过扩展到一个新对象中,将创建一个新的引用,并且react将重新呈现