为什么 React 源代码中的 effect 命名为 "passive effects"?
Why are effects named as "passive effects" in React source code?
作为一个非英语母语的人,我对“被动效应”一词感到困惑,如 React 源代码中的 schedulePassiveEffects
、cancelPassiveEffects
。
'passive' 在这里到底是什么意思?
之所以不只叫effect,是因为React中还有其他的Effect。有突变效果和布局效果以及被动效果。
被动的是常见的监听状态变化(通过依赖数组)然后可以调用改变其他状态的回调。
被动效果的独特之处在于,它会等待所有 UI(渲染和提交)稳定下来,然后再在另一个时间片中调用它们。因此回调发生在类似于事件处理程序的 Javascript 时间片中(例如 onClick
)。
我相信这就是它得名的地方,“被动”。因为它不是主动处理事件,而是被动地监听状态变化并调用回调。我写了一篇关于这个的博客,https://javascript.plainenglish.io/is-a-react-passive-effect-an-artificial-event-2535977b9a91
作为一个非英语母语的人,我对“被动效应”一词感到困惑,如 React 源代码中的 schedulePassiveEffects
、cancelPassiveEffects
。
'passive' 在这里到底是什么意思?
之所以不只叫effect,是因为React中还有其他的Effect。有突变效果和布局效果以及被动效果。
被动的是常见的监听状态变化(通过依赖数组)然后可以调用改变其他状态的回调。
被动效果的独特之处在于,它会等待所有 UI(渲染和提交)稳定下来,然后再在另一个时间片中调用它们。因此回调发生在类似于事件处理程序的 Javascript 时间片中(例如 onClick
)。
我相信这就是它得名的地方,“被动”。因为它不是主动处理事件,而是被动地监听状态变化并调用回调。我写了一篇关于这个的博客,https://javascript.plainenglish.io/is-a-react-passive-effect-an-artificial-event-2535977b9a91