为什么 React 源代码中的效果被命名为“被动效果”?

K4c*_*4ch 2 reactjs react-fiber

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

win*_*mao 6

之所以不只叫effect,是因为React中还有其他的Effects。除了被动效应之外,还有突变效应和布局效应。

被动式是最常见的一种,它监听状态更改(通过依赖项数组),然后可以调用更改其他状态的回调。

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

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