1

作为一个非英语母语的人,我对 React 源代码中的“被动效果”一词感到schedulePassiveEffects困惑cancelPassiveEffects。这里的“被动”到底是什么意思?

4

1 回答 1

1

之所以不叫 effect 是因为 React 中还有其他的 Effects。有突变效果和布局效果以及被动效果。

被动的是普通的监听状态变化(通过依赖数组),然后可以调用一个回调来改变其他状态。

被动效果的独特之处在于,它会等待所有 UI(渲染和提交)稳定下来,然后再在另一个时间片中调用它们。因此回调发生在类似于事件处理程序(例如onClick)的 Javascript 时间片中。

我相信这就是它得名的地方,“被动”。因为它不是主动处理事件,而是被动地监听状态变化并调用回调。我为此写了一篇博客,https://javascript.plainenglish.io/is-a-react-passive-effect-an-artificial-event-2535977b9a91

于 2021-08-07T15:09:39.707 回答