码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue3的ref全家桶---kalrry---ing


    vue3的ref全家桶& reactive---kalrry

    • 一、ref
    • 二、ref与shallowRef
    • 三、ref与Ref
    • 四、shallowRef与triggerRef
    • 五、customRef
    • 六、isRef
    • 七、ref与reactive
    • 八、reactive与readonly
    • 九,shallowReactive

    一、ref

    vue2中常用ref来操作dom

    二、ref与shallowRef

    在vue3里面用ref包裹的数据才有响应式
    在vue2里面是data包裹的数据才有响应式

    1. ref是深层响应式
    2. shallowRef是浅层响应式
    3. ref与shallowRef不能同时使用,ref会影响shallowRef,造成视图更新混乱
    4. ref更改在xxx.value.name='new'
    5. shallowRef更改在xxx.value={ name:'new'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ref响应式原理其实就是收集依赖和触发依赖更新

    三、ref与Ref

    两个在ts中定义数据类型的方式有区别

    import { ref, reactive } from 'vue';
    import type { Ref } from 'vue'
    
    type Msg = {
      num: number
    }
    
    const msg0 = ref({ num: '13' })  //在不定义的情况向会进行类型自动推倒
    const msg1 = ref<Msg>({ num: 13 })
    const msg2: Ref<Msg> = ref({ num: 13 })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、shallowRef与triggerRef

    如果shallowRef使用ref的更新方式,用triggerRef包裹会强制更新shallowRef,起到和ref相同的作用

    五、customRef

    customRef自定义ref,相当于自己去实现一个ref响应式

    
    function MyRef<T>(value: T) {
      return customRef((track, trigger) => {
        get(){
          track()
          return
        },
        set(newVal){
        //这里因为点击会一直出发,我们添加个防抖
        
          clearTimeout(timer)
          timer = setTimeout(() => {
            value = newVal
            trigger()
            timer = null
          }, 500);
        }
      })
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    六、isRef

    用来判断一个数据是不是ref对象

    const msg = ref({ num: '13' }) 
    console.log(isRef(msg) //true
    
    const msg = { num: '13' } 
    console.log(isRef(msg) //false
    //是返回true
    //否返回false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    七、ref与reactive

    ref支持所有类型
    reactive只支持object【array,object,map,set…】
    ref取值赋值都需要加value,reactive不需要
    reactive不能直接赋值,会破坏响应式对象从而导致页面不显示
    解决方案
    数组可以使用push加解构
    教程

    八、reactive与readonly

    readonly是把reactive值变成一个只读的,使之没有办法赋值

    教程

    九,shallowReactive

    相对于reactive来说shallowReactive是浅层响应式改变
    问题和第【二】项说明相似

  • 相关阅读:
    消息中间件篇之Kafka-消费顺序性
    Kamiya丨Kamiya艾美捷小鼠脱细胞素ELISA说明书
    电脑基础知识-电脑不认新硬盘时该怎么办?
    vite2 + vue3 使用svg图标
    BIRCH算法全解析:从原理到实战
    【英语】常见连音规则
    异步 PHP — 多进程、多线程和协程
    两个有助于理解Common Lisp宏的例子
    利用扰动模型计算旋转矩阵的导数例题
    vscode远程链接下的python环境配置
  • 原文地址:https://blog.csdn.net/weixin_45406712/article/details/126758639
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号