zoukankan      html  css  js  c++  java
  • computed/watch/watchEffect

    computed

    computed去计算基本数据类型

     // computed去计算基本数据类型
        const count=ref(1)
        // computed ()里面是不带任何参数的。写成函数形式要有返回值,不然默认是undefined。箭头函数一行默认就是有返回值
        const plusOne=computed(()=>{
          return count.value++
        })
        // computed第二种用法set/set
        const count1=ref(10)
        const plusOne1=computed({
          get:()=>count1.value++,
          set:value=>count1.value=value-5  //set去改变get依赖的值
          // set:()=>{} get/set成对出现 如果set是在不知道写啥 就这set:()=>{}
        })

    watch:watch(要监听的数据,回调函数,配置项对象【非必须】)

    watch监视基本数据类型值

     const count2=ref(1) //监听基本类型值 watch(要监听的数据,回调函数,配置项对象)
        watch(count2,
        (newVal,oldVal)=>{
          console.log(newVal,oldVal); //初始化的时候惰性执行immediate=false默认值(也就是不执行这个回调函数)
        },
        {
          immediate:true, //是否立即监听
          deep:true,//基本数据类型 depp:true/false无所谓了吧
        })

    watch监视对象数据类型

    const state=reactive({count:30,wife:{name:'xiaoling',age:10}})
        // 直接去监视整个对象,里面每个属性值发生改变了,函数都会执行
        watch(state,(newVal,oldVal)=>{ 
          console.log(newVal,oldVal,0); //居然是同一个对象
        },{deep:true,immediate:false}) //deep:true/false影响不大了。默认就是深度监听在深的对象值发生改变也能监听的到
        setTimeout(()=>{
          state.wife.age=state.wife.age +3
        },2000)
    
        
    const state1=reactive({count1:300,wife:{name:'xiaozhang'}}) // 监听对象的特定属性值,只有当对象的这个特定属性值发生改变,函数才会去执行,这个比较好 watch(()=>state1.wife.name,(newVal,oldVal)=>{ //基本值是两个值。深度对象也能监视的到 console.log(newVal,oldVal); },{}) setTimeout(()=>{ state1.wife.name=state1.wife.name+'~~~~~' },2000)

    watchEffect

    在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它。

         const age=ref(10)
         let state=reactive({name:'zs',age:10})
         const changeAge=()=>{
           age.value++
         }
         const changeState=()=>{
           state.name=Math.random()+''
         }
         
          // 自动监视ref值
          watchEffect(()=>{
            console.log('ref-age',age.value); //初始化时候就会自动执行一次。age.value每次发生改变 watchEffect函数都会立即执行。
            
          })
    
         //在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它
         watchEffect(()=>{
           console.log('reactive-state',state); //wo改变state里面属性值如state.name变化 而直接监听state, 只会在初始化时候执行一次。而后不会再执行
         })
         watchEffect(()=>{
           console.log('reactive-state.name',state.name); //初始化时候执行一次 并且当我改变了state.name值(上一次和下一次的值不一样)这个函数就会反复执行
           
         })

    停止监听返回stop函数

    watchEffect清除副作用

    这个有点难

    watchEffect改变立即执行时机。传入配置项{flush:pre/post/sync}

  • 相关阅读:
    JSON学习笔记
    Java面试题之对static的理解
    【知了堂学习笔记】java基础知识之继承
    【知了堂学习笔记】多态基本知识
    Final关键字
    子父类构造函数特点
    原来学编程这么简单,如何理解程序的本质(今天听了【遇见狂神说】发布的《从HelloWorld到程序本质的思考》这个视频,有了自己的一些感悟,在这里和大家做一个分享)
    浅谈c3p0连接池和dbutils工具类的使用
    Mysql数据库重要知识点
    Express安装与调试
  • 原文地址:https://www.cnblogs.com/xiaoliziaaa/p/14980623.html
Copyright © 2011-2022 走看看