当前位置: 首页 > wzjs >正文

网站开发者模式个人网站搭建

网站开发者模式,个人网站搭建,太原做响应式网站,易拉罐手工制作大全深度监听 ref 和 reactive 的区别详解 一、ref 的深度监听(示例代码)关键点:1. ref 的存储方式:2. 监听 ref 的特性 二、reactive 的深度监听(示例代码)关键点:1. reactive 的深度响应性2. 监听…

深度监听 ref 和 reactive 的区别详解

    • 一、ref 的深度监听(示例代码)
      • 关键点:
        • 1. ref 的存储方式:
        • 2. 监听 ref 的特性
    • 二、reactive 的深度监听(示例代码)
      • 关键点:
        • 1. reactive 的深度响应性
        • 2. 监听 reactive 的特性
    • 三、核心区别总结
    • 四、最佳实践建议
      • 1. 优先使用 reactive
      • 2. 明确 ref 的使用场景
      • 3. 简化 watch 配置


以下从响应式原理、监听方式和实际表现三个维度,分析二者的核心区别:

一、ref 的深度监听(示例代码)

<template><div class="person"><p>嵌套值:{{ refObj.nested.value }}</p><button @click="refObj.nested.value = '新的值'">修改值</button></div></template><script lang="ts" setup>
import { ref, watch } from 'vue';
const refObj = ref({nested: {value: "初始值"}
});
watch(refObj, (newVal) => {console.log("ref 嵌套变化:", newVal.nested.value);
}, { deep: true }); // 必须显式设置 deep: truewatch(refObj.value, (newVal) => {console.log("ref 嵌套变化:", newVal.nested.value);
}); // 若改为监听refObj.value(即 reactive 对象),则无需 deep</script>

关键点:

1. ref 的存储方式:

ref 会将对象包裹在 .value 属性中,底层自动用 reactive 转换嵌套对象。(即 refObj.value 是 reactive 代理对象)

2. 监听 ref 的特性
  • 直接监听 refObj(而非 .value)时,需要显式设置 deep: true 才能捕获嵌套属性变化。若不设置 deep,仅当整个 .value 被替换时才会触发监听。
  • 等价替代方案
    若改为监听 refObj.value(即 reactive 对象),则无需 deep:

二、reactive 的深度监听(示例代码)

const reactiveObj = reactive({ nested: { value: "初始值" } 
});watch(() => reactiveObj, (newVal) => {console.log("reactive 嵌套变化:", newVal.nested.value);
}, { deep: true }); // deep:true 在此处是冗余的

关键点:

1. reactive 的深度响应性

reactive 创建的代理对象默认支持深层级响应,修改任意嵌套属性都会触发更新。

2. 监听 reactive 的特性
  • 直接监听 reactiveObj 时,无需 deep 即可自动深度监听。
    示例代码中的 () => reactiveObj 是冗余写法,直接传递 reactiveObj 即可:
watch(reactiveObj, (newVal) => {console.log("reactiveObj 嵌套变化:", newVal.nested.value);
}); // 直接监听 reactiveObj 时,无需 deep 即可自动深度监听
  • 若监听一个返回 reactive 对象的函数(如 () => reactiveObj),需开启深度监听:{deep:true}
watch(()=>reactiveObj, (newVal) => {console.log("reactiveObj 嵌套变化:", newVal.nested.value);
},{deep:true}); // 监听一个返回reactive对象的函数,deep:true 开启深度监听
  • 若监听 reactiveObj.nested.value 时,需使用函数式写法()=>reactiveObj.nested.value,无需开启深度监听。
watch(()=>reactiveObj.nested.value,(newVal,oldVal)=>{console.log("reactiveObj 嵌套变化:", newVal,oldVal);
}); // 监听 reactiveObj.nested.value 时,需使用函数式写法,deep 选项无效

三、核心区别总结

特性ref (对象类型)reactive
数据存储方式包裹在 .value 中直接代理对象
默认深度监听否(需显式设置 deep)
推荐监听方式监听 .value (无需 deep)直接监听对象
适用场景基本类型或需要替换整个对象复杂对象,需深层级响应式

四、最佳实践建议

1. 优先使用 reactive

处理复杂对象时,reactive 的自动深度响应更简洁高效。

2. 明确 ref 的使用场景

当需要替换整个对象或处理基础类型时,选择 ref。

3. 简化 watch 配置

  • 监听 ref 的 .value 替代显式 deep
  • 直接传递 reactive 对象而非函数返回值

通过理解这些差异,可以更精准地选择响应式工具,并避免不必要的性能消耗。

http://www.dtcms.com/wzjs/140380.html

相关文章:

  • 网站内容设计是什么东莞网站建设制作
  • 新网站建设验收广州番禺发布网
  • 成品影视app开发工具seo引擎优化外包
  • 装修设计网站免费免费的网站推广在线推广
  • 企业做网站需要提交的资料表格新河seo怎么做整站排名
  • 网站建设中html5源码google seo 优化教程
  • 国内做焊接机器人平台网站人工智能培训心得
  • 出售源码的网站怎么做网站模板
  • 网上学习做网站网站推广上首页
  • 网站建设注册密码咋弄百度助手安卓版下载
  • app立即打开大连做优化网站哪家好
  • 建站行业有哪些公司百度排名推广
  • 网站网页设计平台今日疫情最新情况
  • 网站建设后怎么写seo百度站长工具
  • 深圳网站建设软件开发爱奇艺科技有限公司
  • 西安市网站建设公司搜索引擎网站排名
  • pageadmin做网站免费网站模板库
  • 京东商城网站建设目标免费收录平台
  • 用flask做网站长沙关键词排名软件
  • 深圳做网站公代发新闻稿最大平台
  • 彩票网站做代理wifi优化大师下载
  • 装修公司网站 源码市场推广方式有哪几种
  • 学习做网站的百度地图优化排名方法
  • 园林公司做网站的好处抖音seo软件
  • 怎么做英文版网站广州新闻发布
  • 瑞安网站建设seo怎么优化软件
  • 成都网站建设冠辰免费搜索引擎入口
  • 做网站需要多大尺寸万网注册域名查询官方网站
  • 网站正在建设中页面 英文翻译网络做推广公司
  • 网站开发的内容百度云网盘资源分享网站