在 React 中有 shorthand setState() 方法吗?

Is there a shorthand way to setState() in React?

假设我像这样初始化组件的状态:

getInitialState: function(){
   return {name: "Bob Smith",
           phone: "555-555-5555",
           location: "San Francisco, CA",
           best-friend: "Bill Jacobson",
           favorite-color: "Orange"}
},

然后,如果我只想修改其中一个状态,我被告知以下是禁忌:

this.state.name = "John Smith";

但我应该使用:

this.setState({name: "John Smith",
               phone: this.state.phone,
               location: this.state.location,
               best-friend: this.state.best-friend,
               favorite-color: this.state.favorite-color});

一定有更有效的方法来做到这一点。有没有一种 shorthand 方法可以安全地改变我的状态对象中的一个 属性?

实际上,您不必指定所有值。只有您想要为其设置新值的那个。

setState 只会向您的状态添加(或随后覆盖)值。它不会重新创建整个对象。

您可以找到相关文档here。 Facebook 开发人员也考虑了您在此处提出的完全相同的问题,并且在幕后他们保留了旧值,我在这里引用:

The first argument can be an object (containing zero or more keys to update) or a function (of state and props) that returns an object containing keys to update.

是的,它内置于 React 中!正如 Elod 所说,您只需指定要更改的状态。该州的其余部分将保持不变。

getInitialState: function() {
  return {
    name: "Bob Smith",
    phone: "555-555-5555",
    location: "San Francisco, CA",
  }
}

// Somewhere else...
this.setState({
  name: "John Smith",
})

this.state 现在是

{
  name: "John Smith",
  phone: "555-555-5555",
  location: "San Francisco, CA",
}