You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React组件setState的最终回调中获取最终提交状态?

并发状态变更后的最终状态获取问题

我遇到了并发场景,应用状态会响应多个并发发生的事件而变更,因此传统的setState(state)无法生效,必须使用操作未提交状态的setState(state => { return {...state, extra } })(这意味着在用于下一次重渲染前,其他事件可对其进行修改)。但同时我需要在状态提交后(所有并发变更都已应用)通过Promise返回结果,于是编写了如下代码:

function applyChangesToState(param1, param2) {
    return new Promise(resolve => {
        this.setState(state => {
            // some compuations here
            const extra = calculateSomeExtra(state, param1, param2);
            return {...state, extra };
        }, () => {
            // HOW CAN I ACCESS THE COMMITED (MOST RECENT AND FINAL) STATE HERE?
            const { extra } = state; // <-- WHERE SHOULD I READ THE COMMITTED STATE FROM?
            // SO I CAN PUT IT IN RESOLVE:
            resolve(extra);

            // IF I READ FROM this.state HERE IS IT CERTAIN THAT 
            // ALL CONCURRENT CHANGES HAVE BEEN APPLIED ALREADY PRIOR TO
            // THE NEXT RE-RENDER?
        });
    });
}

核心问题:通过发起状态变更,如何在回调中获取重渲染前的最终状态?

更新:答案是:在最终回调中使用this.state!


内容的提问来源于stack exchange,提问作者Trident D'Gao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:40:55