可以看到,this.setState内会调用this.updater.enqueueSetState方法。

    enqueueSetState方法中就是我们熟悉的从创建update调度update的流程了。

    这里值得注意的是对于ClassComponentupdate.payloadthis.setState的第一个传参(即要改变的state)。

    可以看到,除了赋值以及没有payload外,其他逻辑与this.setState一致。

    那么赋值update.tag = ForceUpdate;有何作用呢?

    在判断ClassComponent是否需要更新时有两个条件需要满足:

    所以,当某次更新含有tagForceUpdateUpdate,那么当前ClassComponent不会受其他性能优化手段shouldComponentUpdate|PureComponent)影响,一定会更新。

    至此,我们学习完了HostRoot | ClassComponent所使用的Update的更新流程。

    在下一章我们会学习另一种数据结构的Update —— 用于HooksUpdate