功能组件上的React更新状态钩子不允许点表示法

时间:2020-01-03 08:20:09

标签: reactjs react-hooks

我遇到以下错误:

Parsing error: Unexpected token, expected ","

在我的功能组件(不是类)中,我有:

  const [ ministries, setMinistries ] = useState({
    options: '',
    selected: ''
  });

后来我尝试通过执行以下操作来更新ministries

let opts = [1, 2, 3, 4];

setMinistries({
  ministries.selected: opts
})

假设部委是对象,而选定的部委是部委,则我希望使用点符号。 部委。selected:选择工作。

我在做什么错了?

3 个答案:

答案 0 :(得分:2)

请注意,useState更新程序会用新的更新程序覆盖以前的状态,并且不会执行任何合并。 相反,它要求您每次都传递完整状态。

但是,this.setState中的class component并非如此。

根据我的建议,记住这一点很重要,以避免微妙的不良行为。

因此,更新状态的正确方法是:

setMinistries(prevMinistries => ({
   ...prevMinistries,
   selected: opts
}));

答案 1 :(得分:0)

您不能将ministries.selected用作对象键。

您可以这样做:

setMinistries({
  selected: opts,
});

答案 2 :(得分:0)

setMinistries({
  ministries.selected: opts
})

这是错误的语法。您可以在对象内调用对象的属性。

尝试

setMinistries({
  ministries: {
    selected: opts
  }
})

setMinistries({
  selected: opts
})