useState里数据务必为immutable (不可赋值的对象),也就是ass component的state也提倡使用immutable数据,但不是强制的,因为只要调用了setState就会触发更新。
所以再class组件中没有出现这种问题,或者通过改变为空再赋值是可以触发更新的。
但是再使用useState时,如果在更新函数里传入同一个对象时将无法触发更新。
于是解决思路就是通过slice() 返回一个新的对象去赋值是解决问题的关键
例如 setMenu(newMneu.slice())
网友评论