react中使用useState改变数组,无法改变视图(已解决)

433 阅读1分钟

问题:

在react中使用useState()改变数组的值,通过控制台可以打印出改变之后的值,但是视图没有变化

有问题的代码:

const [list,setList] = useState([])
const deleteItem = (i: number) => {
    list.splice(i, 1);
    setList(list);
};

未发生改变的原因可能是因为list本身并没有变化,因为list变量存储的地址是不变的

解决:

让传入的新值和原来的数组指向的不是同一片内存,就能触发DOM的更新

const [list,setList] = useState([])
const deleteItem = (i: number) => {
    list.splice(i, 1);
    setList([...list]);
};

成功解决