我要完成以下任务:
myFunction = () => {
this.setState(
state => {
const originalBar = state.bar;
return {
foo: "bar"
};
},
() => ({ originalBar, newBar: state.foo }) //return this object
);
};
otherFunction = () => {
var originalValue = myFunction(); //access returned object (in child component)
};
setState不返回任何内容,我唯一能弄清楚该怎么做的方法是在setState回调中调用对my function
的回调,但是,如果可能的话,我宁愿使用异步等待来执行此操作。
答案 0 :(得分:1)
我下面的实现不使用异步/等待。如果您需要等到setState
完成,那么最好还是选择Tholle的答案。但是,如果您只想返回一个带有值的对象,而不论状态是否已完全设置,那么我的方法就是一点点的清理。
myFunction = () => {
let returnData;
this.setState(state => {
// do some stuff here
returnData = { originalBar, newBar: state.foo };
return {
foo: "bar"
};
});
return returnData;
}
otherFunction = () => {
var originalValue = this.myFunction();
}
但是,我不建议这样做,而是尽量不要在this.setState
中使用函数回调。
也许您可以做这样的事情?
const originalBar = this.state.foo; // or whatever it might be
const newBar = "bar";
this.setState({ foo: newBar });
return { originalBar, newBar };
要短得多,也要优雅得多。