如果添加编辑过的对象,则React不渲染



下面的代码运行良好,并对子级进行重新渲染:

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将重新呈现

最新更新