0

我无法弄清楚 Redux 操作是同步的还是异步的。考虑一下:

addBook () => {
  console.log( "current books:  ",this.props.books );

  const book = {
      id: 3,
      title: "Percy Jackson"
  };

  this.props.addBook(book); // firing off a new action [ is it synchronous or asynchronous ]

  console.log( "updated books:  ",this.props.books ); // shouldn't these be new props
}

从上面看,两者current booksupdated books是相同的,尽管 UI 已更新,我猜来自商店的新道具也通过mapStateToProps方法传递给该组件。

我错过了什么?

4

1 回答 1

1

触发动作是同步的。然而,reducer是异步的。您在之前和之后获得相同的值,因为这一切都发生在一个同步渲染周期中。在 reducer 完成它的工作之后,您的组件会如您所见那样更新。在这种情况下,您永远不会看到console.log陈述反映两种不同的状态。

于 2019-02-08T17:50:42.620 回答