Vue2、Vue3温习解惑知识点

news2024/10/22 11:15:37

这里写目录标题

  • 一级目录
    • 二级目录
      • 三级目录
  • ref和reactive的区别
    • 用途
    • 用法
    • 响应性
    • 组合式使用
  • vue3中setup语法糖的使用
    • 优势
    • 举例
  • Vue 2 中通过 Object.defineProperty 来拦截对象的属性访问和修改以实现数据的响应化
    • 1. 数据初始化
    • 2. 使用 Object.defineProperty
    • 3. 依赖收集
    • 4. 通知更新
    • 5. 嵌套对象的处理
    • 6. 限制

一级目录

二级目录

三级目录

ref和reactive的区别

用途

  1. ref:
    主要用于创建单一的响应式数据(基本类型或对象)。
    当你需要对一个简单的数据类型(如字符串、数字、布尔值等)进行响应式处理时,使用 ref 更为合适。
  2. reactive:
    用于创建一个响应式对象,适用于复杂的对象或嵌套对象。
    当你需要将整个对象或数组变为响应式时,使用 reactive 更为合适。

用法

  1. 使用 ref 创建的响应式数据需要通过 .value 来访问和修改
  2. 使用 reactive 创建的对象可以直接访问和修改其属性,无需使用 .value

响应性

  1. ref:
    对于基本类型(如数字、字符串等),ref 提供了更简单的响应式处理。
    对于对象类型,使用 ref 时仍然需要通过 .value 来访问。
  2. reactive:
    直接将对象的所有属性变为响应式。
    支持深层嵌套的对象属性,所有嵌套属性都会被自动转换为响应式。

组合式使用

vue3中setup语法糖的使用

优势

使用 setup 语法糖,可以减少样板代码,使得组件更加简洁易读。通过这种方式,你可以直接在模板中使用导入的组件,而无需在 export default 中定义 components 选项

举例

<template>
  <div>
    <MyComponent v-slot="{ info }">
      <p>{{ info.message }} - Count: {{ info.count }}</p>
    </MyComponent>
  </div>
</template>

<script setup>
import MyComponent from './MyComponent.vue';
</script>

Vue 2 中通过 Object.defineProperty 来拦截对象的属性访问和修改以实现数据的响应化

1. 数据初始化

2. 使用 Object.defineProperty

内部实现过程中,Vue 会遍历 data 对象的属性,使用 Object.defineProperty 为每个属性定义 getter 和 setter:

function defineReactive(obj, key, val) {
  // 递归处理嵌套对象
  observe(val); // 使得嵌套对象也响应式

  Object.defineProperty(obj, key, {
    get() {
      // 依赖收集
      return val;
    },
    set(newVal) {
      if (newVal !== val) {
        val = newVal;
        // 通知视图更新
        // 这里可以触发更新逻辑
      }
    }
  });
}

3. 依赖收集

在 getter 中,Vue 会收集依赖(例如组件的渲染函数或计算属性)。当属性被访问时,Vue 会将当前的观察者(watcher)添加到依赖列表中。

4. 通知更新

在 setter 中,当属性值被修改时,Vue 会检查新值与旧值是否不同。如果不同,则更新值并通知依赖的观察者(即更新视图)。

5. 嵌套对象的处理

对于对象中的嵌套属性,Vue 会递归调用 defineReactive 以确保所有层级的属性都是响应式的。这是通过 observe 函数实现的:

function observe(value) {
  if (typeof value !== 'object' || value === null) {
    return;
  }
  // 处理对象的每个属性
  for (let key in value) {
    defineReactive(value, key, value[key]);
  }
}

6. 限制

新增属性: 如果对一个对象添加新属性,Vue 不能自动侦测到这个变化。可以使用 Vue.set(obj, ‘newProp’, value) 来添加新属性,并确保它是响应式的。
数组处理: Vue 通过重写数组的一些方法(如 push、pop、splice 等)来确保数组的变化是响应式的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!

原文链接&#xff1a;SWAT-MODFLOW地表水与地下水耦合技术——建议收藏&#xff01;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623317&idx1&sn87516da827641ffd124519f929e5da26&chksmfa8da372cdfa2a643b7b806b806b31e025382b9896723d891ffd030…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件&#xff0c;它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

2024双十一最建议买的东西有哪些?双11购物清单大全分享

双十一即将来临&#xff0c;各大品牌都推出了令人心动的优惠活动&#xff0c;让我们能够以更加实惠的价格拥有心仪的好物。其中数码家电的产品&#xff0c;也是迎来了一波降价高潮&#xff0c;因此对于数码家电爱好者而言&#xff0c;双十一是入手的绝佳时机&#xff01;本期我…

HTML+CSS实现点赞效果

效果演示 HTMLCSS实现点赞效果 HTML <div class"heart-container" title"Like"><input type"checkbox" class"checkbox" id"Give-It-An-Id"><div class"svg-container"><svg viewBox&qu…

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播 1. 什么是神经网络1.1 什么是感知器1.2 神经网络的结构1.3 为什么神经网络具有非线性切分能力 2. 神经网络的计算过程2.1 计算过程2.2 随机初始化模型参数2.3 激活函数2.3.1 激活函数有哪些2.3.2 优缺点2.3.3 为…

32.第二阶段x86游戏实战2-遍历技能2(技能二叉树基址)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

爱快路由器配置腾讯云动态域名DDNS详细说明

直白点说就是让爱快路由器自动配置当前公网IP地址给域名&#xff0c;动态域名DDNS不清楚的请自行百度&#xff0c; 这里就可以看见操作日志&#xff0c;那么我们一步一步来配置它吧&#xff0c;首先登录爱快路由器&#xff0c;如下图&#xff1a; 那么腾讯云我们怎么找到ID和…

什么是乐观锁、悲观锁?

什么是乐观锁、悲观锁&#xff1f; 乐观锁&#xff1a;乐观锁和悲观锁是并发控制的两种方式&#xff0c;用来确保在多线程或多用户访问共享资源时&#xff0c;数据的一致性和完整性。 悲观锁&#xff08;Pessimistic Lock&#xff09; 悲观锁假设并发操作会经常发生&#xf…

内卷中的营销大斗法:破局与挑战

如今&#xff0c;各个行业内卷严重&#xff0c;企业在营销领域展开了激烈的大斗法。 内卷&#xff0c;是指一种社会或文化模式在发展到一定阶段后&#xff0c;无法实现自我突破&#xff0c;只能在内部不断精细化、复杂化。商业领域的内卷表现为企业间在产品、服务、价格等方面…

Unity通过高德开放平台获取天气信息

一、注册高德开放平台账号&#xff0c;获取天气接口Key 1、构建自己的应用 网址&#xff1a;https://lbs.amap.com/api/webservice/guide/api/weatherinfo 最终调用api的地址形式&#xff1a; https://restapi.amap.com/v3/weather/weatherInfo?city110101&key<用户…

比瓴科技入选国家工业信息安全发展研究中心SBOM工作组首批成员单位

近日&#xff0c;由开放原子开源基金会主办&#xff0c;开源风险评估与治理技术实验室承办的2024开放原子开源生态大会软件物料清单&#xff08;SBOM&#xff09;分论坛在北京成功举办。 在会议上&#xff0c;国家工业信息安全发展研究中心&#xff08;简称“中心”&#xff0…

Florence-2视觉语言模型简明教程

近年来&#xff0c;计算机视觉领域见证了基础模型的兴起&#xff0c;这些模型无需训练自定义模型即可进行图像注释。我们已经看到了用于分类的 CLIP [2]、用于对象检测的 GroundingDINO [3] 和用于分割的 SAM [4] 等模型——每个模型都在其领域表现出色。但是&#xff0c;如果我…

互动装置如何助力乡村振兴展厅板块划分,实现展示效果最大化?

在这片广袤的土地上&#xff0c;每一个乡村都承载着深厚的历史与文化&#xff0c;如今&#xff0c;随着乡村振兴战略的深入实施&#xff0c;为乡村注入了新的活力&#xff0c;乡村振兴展厅的建设&#xff0c;也成为了这一奋斗目标的有力见证和辅助工具&#xff0c;我们今天就来…

从传统到智能,从被动监控到主动预警,解锁视频安防平台EasyCVR视频监控智能化升级的关键密钥

视频监控技术从传统监控到智能化升级的过程是一个技术革新和应用场景拓展的过程。智能视频监控系统通过集成AI和机器学习算法&#xff0c;能够实现行为分析、人脸识别和异常事件检测等功能&#xff0c;提升了监控的准确性和响应速度。这些系统不仅用于传统的安全防护&#xff0…

英语语法学习框架(考研)

一、简单句 英语都是由简单句构成&#xff0c;简单句共有五种基本句型&#xff1a;①主谓&#xff1b;②主谓宾&#xff1b;③主谓宾宾补&#xff1b;④主谓宾间宾&#xff08;间接宾语&#xff09;&#xff1b;⑤主系表&#xff1b; 其中谓语是句子最重要的部分&#xff0c;谓…

渗透实战 JS文件怎么利用

1.前言 关于JS在渗透测试中的关键作用&#xff0c;想必不用过多强调&#xff0c;在互联网上也有许多从JS中找到敏感信息从而拿下关键系统的案例。大部分师傅喜欢使用findsomething之类的浏览器插件&#xff0c;也有使用诸如Unexpected.information以及APIFinder之类的Burp插件…

【Linux】【命令】diff

diff DescriptionsArgumentsExamples直接使用diff命令-u 输出格式-c 输出格式并列输出-s 和 -q 脚本示例示例1&#xff1a;目录及文件差异 Descriptions diff命令用于对比两个文件或者两个文件夹的不同之处&#xff0c;求基本语法如下所示&#xff1a; diff [OPTION]... FILES…

免费插件集-illustrator插件-Ai插件-创建外接圆

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;实现创建图形中的创建外接圆功能。首先从下载网址下载这款插件https://download.csdn.net/download/m0_67316550/…