如何处理这个状态的异步性

时间:2018-04-23 10:52:32

标签: asynchronous react-native asyncstorage

这样做:

onPress={() => {
          this.setState({
            myArray: []
          });
          const { myArray } = this.state;
          console.log(myArray);
        }}

期望数组为空,但它仍包含旧值。如果我再次按下该按钮,或者在程序中的其他位置使用console.log,则该数组为空。我认为这是由于this.state是异步的。这是一个问题,因为我计划将数组保存到AsyncStore,而不是console.log,而不是这样:

AsyncStorage.setItem(
  "@ShoppingListStore: ShoppingListKey",
  JSON.stringify(myArray) 
);

如果在设置状态后我无法直接保存数组,我可以在哪里进行操作?有没有办法监听状态来完成设置,然后运行AsyncStore代码?

1 个答案:

答案 0 :(得分:1)

尝试类似的东西:

onPress={() => {
          this.setState({
            ...this.state, myArray: []
          }, () => console.log(this.state.myArray));
        }}