是否可以抑制重新渲染?假设我在 state 上调度处理程序[:a]
和处理程序。这样:[:b]
db-0
db-0 -> [:a] -> db-1 -> [:b] -> db-0
最终状态相同,但进行了两次重新渲染。我不希望重新渲染中间状态db-1
。如有必要,重新渲染应该只在两者都应用之后[:a]
发生[:b]
。
是否可以抑制重新渲染?假设我在 state 上调度处理程序[:a]
和处理程序。这样:[:b]
db-0
db-0 -> [:a] -> db-1 -> [:b] -> db-0
最终状态相同,但进行了两次重新渲染。我不希望重新渲染中间状态db-1
。如有必要,重新渲染应该只在两者都应用之后[:a]
发生[:b]
。
如果 adispatch
导致 更改app-db
,则动画帧将被“调度”以处理任何必要的重新渲染。结果,重新渲染将在大约 16 毫秒后发生。
如果同时发生另一个dispatch
,那么它的更改app-db
也将在已经安排好的即将到来的动画帧中处理。
到 AF 滚动时,这两个dispatched
事件的更改将在app-db
.
因此,如您所见,调度 of[:a]
将导致 AF 被调度,但是在它运行之前,您dispatch
的 of[:b]
将进一步变app-db
回其原始状态。
当稍后 AF 运行时,所有第 2 层订阅都将运行,所有这些订阅都将运行,因为app-db
已更改(以某种方式尚不清楚)但因为以前的值将是=
新值,信号图传播将被修剪,并且不会重新渲染最终会运行。