Reactjs 未添加到状态元素数组的最后一个元素

Reactjs 未添加到状态元素数组的最后一个元素,reactjs,react-native,setstate,Reactjs,React Native,Setstate,在下面的代码中,当第一个元素(a)被传递给checkBoxClicked函数时,第2行中的console.log(id)打印a,但console.log(this.state.dealIdToUnSave)打印[],其中它应该打印[a] 稍后,当另一个元素(比如b)被传递到checkBoxClicked函数时,console.log(id)打印b,但console.log(this.state.dealIdToUnSave)只打印[a],尽管它应该打印[a,b] 有什么明显的原因会发生这种情况吗

在下面的代码中,当第一个元素(a)被传递给checkBoxClicked函数时,第2行中的console.log(id)打印a,但console.log(this.state.dealIdToUnSave)打印[],其中它应该打印[a]

稍后,当另一个元素(比如b)被传递到checkBoxClicked函数时,console.log(id)打印b,但console.log(this.state.dealIdToUnSave)只打印[a],尽管它应该打印[a,b]

有什么明显的原因会发生这种情况吗

checkBoxClicked = (id) => {
        console.log(id);
        this.setState({
            dealIdToUnSave: [...this.state.dealIdToUnSave, id]
        });
        console.log(this.state.dealIdToUnSave);
    }

由于setState是异步的,因此可以在作为第二个参数传递给setState的回调函数中记录状态更改

checkBoxClicked=(id)=>{
console.log(id);
这是我的国家({
dealIdToUnSave:[…this.state.dealIdToUnSave,id]
}, () => {
console.log(this.state.dealIdToUnSave);
});

}
状态更改可能不会立即发生。在
此.setState的文档中明确提到了它

将setState()视为更新组件的请求,而不是即时命令。为了更好地感知性能,React可能会延迟它,然后在一次过程中更新多个组件。React不保证立即应用状态更改


this.setState是异步的,因此它可能不会在下一个代码中显示更新后的值。有没有办法在这里使用promise而不是callback?我该怎么做?