Javascript 在Preact中更新功能组件中处于状态的对象

Javascript 在Preact中更新功能组件中处于状态的对象,javascript,reactjs,preact,Javascript,Reactjs,Preact,在useffect中,对后端app.js进行获取调用以获取一些数据,这些数据作为对象laStateObj返回 useEffect(() => { fetchCall<{ laStateObj }>('/fetchData').then((data) => { const ddata = JSON.parse(data); setLaStateObj({ email: ddata.email, approve

在useffect中,对后端
app.js
进行获取调用以获取一些数据,这些数据作为对象
laStateObj
返回

useEffect(() => {
   fetchCall<{ laStateObj }>('/fetchData').then((data) => {
      const ddata = JSON.parse(data);
      setLaStateObj({
         email: ddata.email,
         approved: ddata.approved
      });
   });
}, []);
更改单选按钮值时,我希望切换布尔值的状态
已批准

<Checkbox checked={laStateObj.approved} onChange={(prev.approved) => !prev.approved} />
!上一次批准}/>
这不起作用,所以我添加了一个处理程序:

<Checkbox checked={laStateObj.approved} onChange={handleApproved} />

const handleApproved = () => {
   const prevApproved = laStateObj.approved;
   setLaStateObj = {...laStateObj, approved: !prevApproved};
};

常数=()=>{
const prevApproved=laStateObj.approved;
setLaStateObj={…laStateObj,已批准:!prevApproved};
};
我很确定这是错的(我的linter说是…)-那么这应该怎么写呢


请注意,这是预作用,而不是反应,因此语法可能有点不同。

setLaStateObj
是一个函数,并且是
const
,因此您不能执行类似
setLaStateObj={…laStateObj,approved:!prevApproved}

如果你想切换批准状态,我认为应该是

setLaStateObj(state => ({
  ...state,
  approved: !state.approved
}))
在中展开上一个状态并更新
approved
属性

const handleApproved = () => {
  setLaStateObj(state => ({
    ...state,
    approved: !state.approved
  }))
};

...

<Checkbox checked={laStateObj.approved} onChange={handleApproved} />
const handleApproved=()=>{
setLaStateObj(状态=>({
……国家,
已批准:!state.approved
}))
};
...
非常感谢!
const handleApproved = () => {
  setLaStateObj(state => ({
    ...state,
    approved: !state.approved
  }))
};

...

<Checkbox checked={laStateObj.approved} onChange={handleApproved} />