首页 > 解决方案 > 功能组件上的反应更新状态钩子不允许点符号

问题描述

我收到以下错误:

Parsing error: Unexpected token, expected ","

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

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

稍后在另一种方法中,我尝试ministries通过执行以下操作进行更新:

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

setMinistries({
  ministries.selected: opts
})

假设部委是对象,并且选择的是部委,我希望使用点符号。ministries.selected:选择工作。

我究竟做错了什么?

标签: reactjsreact-hooks

解决方案


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

但是,this.setStateclass component.

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

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

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

推荐阅读