react 中的update
2023-01-13 18:04 木木不在 阅读(211) 评论(0) 编辑 收藏 举报我们先来了解Update
的结构。
首先,我们将可以触发更新的方法所隶属的组件分类:
-
ReactDOM.render —— HostRoot
-
this.setState —— ClassComponent
-
this.forceUpdate —— ClassComponent
-
useState —— FunctionComponent
-
useReducer —— FunctionComponent
可以看到,一共三种组件(HostRoot
| ClassComponent
| FunctionComponent
)可以触发更新。
由于不同类型组件工作方式不同,所以存在两种不同结构的Update
,其中ClassComponent
与HostRoot
共用一套Update
结构,FunctionComponent
单独使用一种Update
结构。
字段意义如下:
-
eventTime:任务时间,通过
performance.now()
获取的毫秒数。由于该字段在未来会重构,当前我们不需要理解他。 -
lane:优先级相关字段。当前还不需要掌握他,只需要知道不同
Update
优先级可能是不同的。
你可以将
lane
类比心智模型
中需求的紧急程度
。
-
suspenseConfig:
Suspense
相关,暂不关注。 -
tag:更新的类型,包括
UpdateState
|ReplaceState
|ForceUpdate
|CaptureUpdate
。 -
payload:更新挂载的数据,不同类型组件挂载的数据不同。对于
ClassComponent
,payload
为this.setState
的第一个传参。对于HostRoot
,payload
为ReactDOM.render
的第一个传参。 -
callback:更新的回调函数。即在commit 阶段的 layout 子阶段一节中提到的
回调函数
。 -
next:与其他
Update
连接形成链表。