watchEffect

功能和watch大致相当区别是

  • 初始化时会自动执行一次和计算属性同理
  • 不用传入依赖的数据,自己会主动收集依赖
  • watchEffect拿不到oldValue
  • watchEffect返回一个可以停止watchEffect的函数句柄可以通过调用此函数停止watch
  • watchEffect传入的回调函数会以参数的形式返回一个onInvalidate,onInvalidate(fn)传入的回调会在 watchEffect 重新运行或者 watchEffect 停止的时候执行
<template>
  <div class="page-wrapper">
    <p>-------------------------------shallowReactive--------------------------</p>
    <p>{{stuAge}}</p>
    <button @click="myFn">点我一下</button>
  </div>
</template>
<script lang="js">
import { defineComponent, ref, watchEffect } from 'vue';
export default defineComponent({
  name: 'effect-test',
  setup(){
    let stuAge= ref(0);
    function myFn(){
        stuAge.value++;
    }
    const stop= watchEffect(onInvalidate => {
        console.log('effect enter', stuAge.value);

        //处理watchEffect频繁调用的逻辑
        onInvalidate(()=> {
            console.log('onInvalidate enter');
        })
        if(stuAge.value === 3){
            stop();
        }
    })
    return {
        stuAge,
        myFn
    }
  }
  
})
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容