1

是否可以抑制重新渲染?假设我在 state 上调度处理程序[:a]和处理程序。这样:[:b]db-0

db-0 -> [:a] -> db-1 -> [:b] -> db-0

最终状态相同,但进行了两次重新渲染。我不希望重新渲染中间状态db-1。如有必要,重新渲染应该只在两者都应用之后[:a]发生[:b]

4

1 回答 1

1

背景

如果 adispatch导致 更改app-db,则动画帧将被“调度”以处理任何必要的重新渲染。结果,重新渲染将在大约 16 毫秒后发生。

如果同时发生另一个dispatch,那么它的更改app-db也将在已经安排好的即将到来的动画帧中处理。

到 AF 滚动时,这两个dispatched事件的更改将在app-db.

你的场景

因此,如您所见,调度 of[:a]将导致 AF 被调度,但是在它运行之前,您dispatch的 of[:b]将进一步变app-db回其原始状态。

当稍后 AF 运行时,所有第 2 层订阅都将运行,所有这些订阅都将运行,因为app-db已更改(以某种方式尚不清楚)但因为以前的值将是=新值,信号图传播将被修剪,并且不会重新渲染最终会运行。

于 2018-01-13T13:11:23.837 回答