【发布时间】:2021-08-05 04:46:12
【问题描述】:
我了解完全更新的状态会传递给 setState 的回调。不过,我想知道 this.state 当时是否也是最新的。原因是我有一个使用 this.state 的方法,我想知道从回调内部调用是否安全。示例:
areWeBigger = () => {
const { theirSize } = this.props;
const { ourSize } = this.state;
return ourSize > theirSize;
};
attemptToEat = () => {
this.setState(({ ourSize }) => {
const bigger = this.areWeBigger(); // Is this safe?
return { ourSize: bigger ? ourSize + 1 : ourSize - 1 };
});
};
编辑
我现在意识到我一直称之为“回调”的东西实际上被称为“更新程序”。很抱歉造成混乱。
【问题讨论】:
-
对不起,我只想说清楚。您也在谈论 this.state,而不仅仅是 state 参数,对吗?
-
this.areWeBigger() 是在状态改变之前。 this.setState(param1, param2),其中 param1 只知道当前状态,而 param2(回调)是更新后的状态。
-
如果您不使用对象解构语法将参数传递给状态更新程序函数,您的示例将更具可读性和更易于理解。
标签: reactjs