首页 > 其他分享 >Vue3之customRef

Vue3之customRef

时间:2022-12-27 22:46:59浏览次数:46  
标签:return keyWord value myRef customRef Vue3 ref

customRef

  • 作用:创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。

  • 比如在input更新数据之后,设置 指定时间之后再在h3标签上重新展示最新的数据:

<template>
    <input type="text" v-model="keyWord">
    <h3>{{keyWord}}</h3>
</template>

<script>
    import {ref,customRef} from 'vue'
    export default {
        name: 'App',
        setup() {
            //自定义一个ref——名为:myRef
            function myRef(value,delay){
                let timer
                return customRef((track,trigger)=>{
                    return {
                        get(){
                            console.log(`有人从myRef这个容器中读取数据了,我把${value}给他了`)
                            track() //通知Vue追踪value的变化(提前和get商量一下,让他认为这个value是有用的)
                            return value
                        },
                        // 数据更改触发set方法
                        set(newValue){
                            console.log(`有人把myRef这个容器中数据改为了:${newValue}`)
                            clearTimeout(timer)
                            timer = setTimeout(()=>{
                                value = newValue
                                trigger() //通知Vue去重新解析模板
                            },delay)
                        },
                    }
                })
            }

            // let keyWord = ref('hello') //使用Vue提供的ref
            let keyWord = myRef('hello',500) //使用程序员自定义的ref
            
            return {keyWord}
        }
    }
</script>

 

标签:return,keyWord,value,myRef,customRef,Vue3,ref
From: https://www.cnblogs.com/anjingdian/p/17009158.html

相关文章

  • Vue3之toRaw 与 markRaw
    toRaw与markRawtoRaw:作用:将一个由reactive生成的响应式对象转为普通对象。ref的对象不行使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引......
  • Vue3之readonly 与 shallowReadonly
    readonly与shallowReadonlyreadonly:让一个响应式数据变为只读的(深只读)。shallowReadonly:让一个响应式数据变为只读的(浅只读)。应用场景:不希望数据被修改时。示......
  • Vue3之shallowReactive 与 shallowRef
    shallowReactive与shallowRefshallowReactive:只处理对象最外层属性的响应式(浅响应式)。shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。什么时......
  • Vue3之toRef
    toRef作用:创建一个ref对象,其value值指向另一个对象中的某个属性。语法:constname=toRef(person,'name')应用:要将响应式对象中的某个属性单独提供给外部使用......
  • Vue3生命周期
    Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但有有两个被更名:beforeDestroy改名为 beforeUnmountdestroyed改名为 unmountedVue3.0也提供了CompositionAPI形式......
  • Vue3之watchEffect函数
    watchEffect函数watch的套路是:既要指明监视的属性,也要指明监视的回调。watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。wat......
  • vue3 项目中设置组件name
    在开发vue3项目时,如果使用的是setup语法,那么想要给组件设置name属性。可以通过下面的两种形式。在组件中额外创建一个script脚本,在其中采用选项式api的写法,设置name属性......
  • Vue3 企业级优雅实战 - 组件库框架 - 9 实现组件库 cli - 上
    上文搭建了组件库cli的基础架子,实现了创建组件时的用户交互,但遗留了cli/src/command/create-component.ts中的createNewComponent函数,该函数要实现的功能就是上文开......
  • vue3传值
    https://blog.csdn.net/H_114/article/details/122420402?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERat......
  • 【Vue2.0与Vue3.0区别总结】
    vue2.0和vue3.0区别结构部分程序主入口文件main.jsvue2.0vue3.0-暴露出createApp方法组件语法部分(vue3.0主要针对api的优化,vue3.0兼容vue2.0写法)vue3.0使用​​组......