Javascript 在Preact中更新功能组件中处于状态的对象
在useffect中,对后端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
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} />