根据情况从2-3个地方调用下面的函数。我根据自己状态的值进行api调用,如下所示:
myFunction = () => {
# do something
const { myVariable } = this.state;
if (!myVariable.item) { // myVariable.item is not getting latest variable
makeAPICall().then(data => {
myVariable.item = data;
this.setState({ myVariable }); // setting in state here
});
}
}在一次调用上面的函数之后,状态myVariable应该被设置为item,但是当它在这之后再次调用时,myVariable.item是未定义的。
我可以做些什么来从我的状态中获取最新的值以防止再次调用api?
发布于 2021-03-15 03:10:55
问题:状态突变
您的变量myVariable是对this.state.myVariable中的对象的对象引用。您不能像myVariable.item = data一样为它赋值,因为这是状态的非法变体。
解决方案
您需要创建一个新对象,您可以使用对象扩展语法来执行此操作。
myFunction = () => {
const { myVariable } = this.state;
if (!myVariable.item) {
makeAPICall().then(data => {
this.setState({
myVariable: {
...myVariable, // copy all properties
item: data, // override item property
}
});
});
}
}https://stackoverflow.com/questions/66628144
复制相似问题