首页 > 解决方案 > 使用 useState() 替换完整对象的方法是什么?

问题描述

在我的应用程序中,我有一个对象数组和一个保存当前选定对象的状态。该对象不是深度嵌套的,只包含原始类型。该对象来自一个点击事件。如果我选择一个新对象,则当前选定对象的状态应更改为新对象。不需要来自先前选定对象的数据。那么改变状态的最佳方法是什么(性能方面、可读性方面等)。

const [currentSelectedObject, setCurrentSelectedObject] = useState();

setCurrentSelectedObject(newObject);

或者

setCurrentSelectedObject({...currentSelectedObject, ...newObject});

或者

setCurrentSelectedObject( currentSelectedObject => {...currentSelectedObject, ...newObject});

标签: reactjsreact-hooksuse-state

解决方案


在这种setCurrentSelectedObject(newObject)情况下是最好的。

构造setCurrentSelectedObject({...currentSelectedObject, ...newObject}) 看起来很危险,因为这种方式从上次渲染时间开始currentSelectedObject过时了,并且上次渲染时间和当前之间的状态将丢失。


推荐阅读