React State 落后一个状态
React State one state behind
所以我有一个非常小的程序,在点击 TouchableOpacity 时我将一个项目添加到我的数组中。所以相同的代码看起来像
// Initial state is []
onClick = () => {
this.setState(
{
arr: this.state.arr.concat({a: 1, b: 2}),
},
console.log(this.state.arr), // gives []
);
};
setState回调函数中的console.log是在一个状态后面。在 nextClick 上,它给出的状态为 [{"a": 1, "b": 2}]
。那么如何获取当前更新状态呢?
您没有在 回调 中传递 console.log(...)
。尝试以下操作:-
onClick = () => {
this.setState(
{
arr: this.state.arr.concat({a: 1, b: 2}),
},
()=>console.log(this.state.arr), //
);
我认为您打算将 回调 作为第二个参数传递,但现在您直接调用 console.log
。
改成() => console.log(this.state.arr),
就可以了
所以我有一个非常小的程序,在点击 TouchableOpacity 时我将一个项目添加到我的数组中。所以相同的代码看起来像
// Initial state is []
onClick = () => {
this.setState(
{
arr: this.state.arr.concat({a: 1, b: 2}),
},
console.log(this.state.arr), // gives []
);
};
setState回调函数中的console.log是在一个状态后面。在 nextClick 上,它给出的状态为 [{"a": 1, "b": 2}]
。那么如何获取当前更新状态呢?
您没有在 回调 中传递 console.log(...)
。尝试以下操作:-
onClick = () => {
this.setState(
{
arr: this.state.arr.concat({a: 1, b: 2}),
},
()=>console.log(this.state.arr), //
);
我认为您打算将 回调 作为第二个参数传递,但现在您直接调用 console.log
。
改成() => console.log(this.state.arr),