如何解决在Preact中的FunctionalComponent中更新状态中的对象
在useEffect中,对后端app.js
进行访存调用以获取一些数据,这些数据作为对象laStateObj
返回。
useEffect(() => {
fetchCall<{ laStateObj }>('/fetchData').then((data) => {
const ddata = JSON.parse(data);
setLaStateObj({
email: ddata.email,approved: ddata.approved
});
});
},[]);
我创建了一个设置器来更新该状态值:
const [laStateObj,setLaStateObj] = setState({email: undefined,approved: undefined});
单选按钮值更改后,我希望切换布尔值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};
};
我很确定这是错误的(我的短毛猫说这是...)-那么应该怎么写呢?
请注意,这是Preact,而不是React,因此语法可能有所不同。
解决方法
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} />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。