【问题标题】:Which way to use to replace a complete object with useState()?使用 useState() 替换完整对象的方法是什么?
【发布时间】:2020-06-19 21:22:57
【问题描述】:

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

const [currentSelectedObject, setCurrentSelectedObject] = useState();

setCurrentSelectedObject(newObject);

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

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

【问题讨论】:

  • this.setState(object)
  • @HoldOffHunger 我认为这在 React 函数组件中是不可能的。

标签: reactjs react-hooks use-state


【解决方案1】:

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

setCurrentSelectedObject(newObject);

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

【讨论】:

    【解决方案2】:

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

    建设setCurrentSelectedObject({...currentSelectedObject, ...newObject}) 看起来很危险,因为这样currentSelectedObject 与上次渲染时间相比陈旧,并且上次渲染时间和当前时间之间的状态将丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多