【Vue3】Ref 和 ShallowRef 的区别

什么是 Ref

Ref 是 Vue 3 中的一个新的基本响应式数据类型,它允许我们包装任意的 JavaScript 值,并且在数据变化时发出通知。Ref 提供了一个 .value 属性来访问其内部的值,同时还提供了一些额外的 API 来处理数据。Ref 可以被用于跟踪单个值的变化,并在需要时自动触发重新渲染。

什么是 ShallowRef

ShallowRef 与 Ref 类似,它也是用来包装值并监听变化的。但是,与 Ref 不同的是,ShallowRef 会对其包装的值进行浅层的响应式转换。这意味着,当包装对象发生变化时,只有对象的第一层属性会触发响应式更新,而不会深层遍历对象。

区别对比

  1. 深度响应式转换: Ref 对包装的值进行深度响应式转换,而 ShallowRef 则只进行浅层响应式转换。
  2. 性能影响: 由于 ShallowRef 只对第一层属性进行响应式转换,因此在处理大型对象时可能会比 Ref 更具性能优势。
  3. 应用场景: Ref 适用于需要对整个对象进行深度响应式转换的场景,而 ShallowRef 则适用于只需要关注对象的第一层属性变化的场景。

示例代码

import { ref, shallowRef } from 'vue';

// Ref 示例
const count = ref(0);
count.value++; // 触发重新渲染

// ShallowRef 示例
const obj = { count: 0 };
const shallowObj = shallowRef(obj);
shallowObj.value.count++; // 仅触发第一层属性的更新

相关推荐

  1. Vue3Ref ShallowRef 区别

    2024-03-11 03:30:05       46 阅读
  2. Vue学习笔记-Vue3shallowReactiveshallowRef

    2024-03-11 03:30:05       62 阅读
  3. Vue3refreactive区别

    2024-03-11 03:30:05       61 阅读
  4. Vue3refreactive区别是什么?

    2024-03-11 03:30:05       54 阅读
  5. vue3 ref reactive 区别

    2024-03-11 03:30:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 03:30:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 03:30:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 03:30:05       82 阅读
  4. Python语言-面向对象

    2024-03-11 03:30:05       91 阅读

热门阅读

  1. MySQL和Redis Common Command

    2024-03-11 03:30:05       46 阅读
  2. 什么是生活?(2024-2-26)

    2024-03-11 03:30:05       50 阅读
  3. vim基本使用

    2024-03-11 03:30:05       42 阅读
  4. 京东面试官问我,你在catch块中写业务代码吗?

    2024-03-11 03:30:05       54 阅读
  5. Docker容器管理的内容与作用

    2024-03-11 03:30:05       45 阅读
  6. 鸿蒙os开发做全局路由拦截

    2024-03-11 03:30:05       69 阅读
  7. WPF自定义快捷命令

    2024-03-11 03:30:05       47 阅读
  8. web蓝桥杯真题:冰墩墩心情刻度尺

    2024-03-11 03:30:05       52 阅读
  9. 【c++】模板的使用

    2024-03-11 03:30:05       47 阅读