哪种方法可以用useState()替换完整的对象?

时间:2020-06-19 21:22:57

标签: reactjs react-hooks use-state

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

const [currentSelectedObject, setCurrentSelectedObject] = useState();

setCurrentSelectedObject(newObject);

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

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

2 个答案:

答案 0 :(得分:0)

如果您只想将currentSelectedObject设置为一个全新的对象:

setCurrentSelectedObject(newObject);

如果您想newObject的属性添加到现有的,先前设置的currentSelectedObject 中,则可以使用其他两种方法之一。

答案 1 :(得分:0)

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

构造setCurrentSelectedObject({...currentSelectedObject, ...newObject}) 看起来很危险,因为这样currentSelectedObject距上次渲染时间已经过陈旧,并且上次渲染时间与当前时间之间的状态将丢失。