[英]useState not updating Array after calling API
I have my code as follows:我的代码如下:
const ManageModules: React.FC < IProps > = ({
history
}) => {
const [CurrentlyRegisteredModules, setCurrentlyRegisteredModules] = useState(null as unknown as any[])
const [SelectedModule, setSelectedModule] = useState(null as unknown as any);
useEffect(() => {
userModuleService.addUserModule(SelectedModule.id)
.subscribe(res => {
setCurrentlyRegisteredModules(x => {
x.push(new RegisteredModules(res.data));
return x;
});
});
})
},
[SelectedModule]);
useEffect(() => {
console.log('Current Reg Change');
}, [CurrentlyRegisteredModules]);
}
Everytime SelectedModule changes, the effect listening to it runs fine and returns a value.每次SelectedModule更改时,监听它的效果运行良好并返回一个值。 I then push the result to array CurrentlyRegisteredModules using setCurrentlyRegisteredModules .我然后将结果推到使用setCurrentlyRegisteredModules阵列CurrentlyRegisteredModules。
However, the problem I am facing is that the effect listening to CurrentlyRegisteredModules is not triggered but when i inspect CurrentlyRegisteredModules in console, it shows that the result was added to the area.但是,我面临的问题是未触发收听CurrentRegisteredModules的效果,但是当我在控制台中检查CurrentRegisteredModules时,它显示结果已添加到该区域。
Can anyone identify what I could be doing wrong.任何人都可以确定我可能做错了什么。
Change following code更改以下代码
setCurrentlyRegisteredModules(x => {
x.push(new RegisteredModules(res.data));
return x;
});
to到
setCurrentlyRegisteredModules(x => {
let newX = [...x]
newX.push(new RegisteredModules(res.data));
return newX;
});
Do not mutate x
.不要改变x
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.