Vue3的EffectScope如何实现深度理解并优化长尾效应?
- 内容介绍
- 文章标签
- 相关推荐
本文共计888个文字,预计阅读时间需要4分钟。
Vue 3.2 版本引入了新的 Effect Scope API,通过使用 `effectScope` 可以创建一个 effect 作用域,捕捉其中创建的响应式副作用(如计算属性和侦听器)。这样,可以集中处理这些副作用,提高代码的可维护性和性能。使用 `getC()` 方法可以获取作用域内的计算值。
Vue 3.2 版本引入了新的 Effect scope API,使用 effectScope 创建一个 effect 作用域,可以捕获其中所创建的响应式副作用 (即计算属性和侦听器),这样捕获到的副作用可以一起处理。使用 getCurrentScope 返回当前活跃的 effect 作用域。使用 onScopeDispose 在当前活跃的 effect 作用域上注册一个处理回调函数。当相关的 effect 作用域停止时会调用这个回调函数。
const scope = effectScope() scope.run(() => { const doubled = computed(() => counter.value * 2) watch(doubled, () => console.log(doubled.value)) watchEffect(() => console.log('Count: ', doubled.value)) }) // 处理掉当前作用域内的所有 effect scope.stop()
在 Vue 的 setup 中,响应会在开始初始化的时候被收集,在实例被卸载的时候,响应就会自动的被取消追踪了,这时一个很方便的特性。
但是,当我们在组件外使用或者编写一个独立的包时,这会变得非常麻烦。
本文共计888个文字,预计阅读时间需要4分钟。
Vue 3.2 版本引入了新的 Effect Scope API,通过使用 `effectScope` 可以创建一个 effect 作用域,捕捉其中创建的响应式副作用(如计算属性和侦听器)。这样,可以集中处理这些副作用,提高代码的可维护性和性能。使用 `getC()` 方法可以获取作用域内的计算值。
Vue 3.2 版本引入了新的 Effect scope API,使用 effectScope 创建一个 effect 作用域,可以捕获其中所创建的响应式副作用 (即计算属性和侦听器),这样捕获到的副作用可以一起处理。使用 getCurrentScope 返回当前活跃的 effect 作用域。使用 onScopeDispose 在当前活跃的 effect 作用域上注册一个处理回调函数。当相关的 effect 作用域停止时会调用这个回调函数。
const scope = effectScope() scope.run(() => { const doubled = computed(() => counter.value * 2) watch(doubled, () => console.log(doubled.value)) watchEffect(() => console.log('Count: ', doubled.value)) }) // 处理掉当前作用域内的所有 effect scope.stop()
在 Vue 的 setup 中,响应会在开始初始化的时候被收集,在实例被卸载的时候,响应就会自动的被取消追踪了,这时一个很方便的特性。
但是,当我们在组件外使用或者编写一个独立的包时,这会变得非常麻烦。

