Vue3 刨析响应式 ref 原理

news2024/11/17 13:47:20

目标

了解 Vue ,手写一个方法,实现响应式,并读懂响应式

源码

class MyRef {
  constructor(value) {
    this._value = value
  }
  // 访问器
  get value() {
    console.log('触发 getter 函数 访问');
    return this._value
  }
  // 读取器
  set value(newVal) {
    console.log('触发 setter 函数 修改');
    this._value = newVal
  }
}

const c1 = new MyRef(20)
console.log("c1:", c1);
setTimeout(() => {
  c1.value = 30
  console.log("c1:", c1);
}, 3000);

分析

我们自定义了一个 class 类,并在 class 中写入 constructor 以及 get、set 方法,get value 做依赖收集并派发更新

  1. 第一次读取我们定义的响应式数据时,调用的时getter 方法输出如下
    在这里插入图片描述
  1. 经过修改响应式数据,我们调用 setter 方法,输出如下
    在这里插入图片描述

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

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

相关文章

微电网数字化系统硬件设备在储能行业中的应用

安科瑞虞佳豪 1如果说火爆的储能行业堪比新能源赛道上的皇冠,那么工商业储能就是皇冠上的明珠。 提及储能,人们习惯更多地关注源网侧储能电站(大储)身上,探讨发电侧配储、利用率、共享储能模式等话题,但其…

不一般!R型变压器直流电阻和绝缘电阻背后的秘密原来是这样!

一般来说,除了技术人员之外,我们可能不太清楚变压器的一些内部电阻,比如什么是R型变压器的直流电阻?事实上,这些都是变压器参数中的一些重要信息,通常与变压器的质量和使用有关。让我们和小r一起来看看什么…

AR项目问题汇总

1、unity使用URP 导致ARFoundation黑屏 (16条消息) unity使用URP 导致ARFoundation黑屏_arfoundation运行iphone黑屏_weixin_46813963的博客-CSDN博客https://blog.csdn.net/weixin_46813963/article/details/117509322Configuring the AR Camera background using a Scriptab…

Android Studio中App Inspection 或Profiler里网络请求数据显示中文乱码解决办法

如题,在Android开发时经常需要网络请求分析,但是Response 里面的中文经常乱码,用如下办法可解决 效果如下: 解决办法 Android studio在 Help中找到Edit Custom VM Options… 并打开文件,在文件中添加 -Dfile.encod…

记录一次 vite 配置别名路径 打包时出错的bug

vite多页应用,由于在vite.config.ts中define中配置的常量pages,而路径别名也有pages,所有导致打包时替换路径出错,将pages常量注释掉就好了 export default defineConfig({root: getRoot(), // 项目根路径base: "/", // 公共基础路径envDir: resolve(__dirname), /…

SpringBoot03:yaml配置注入

目录 一、yaml语法学习 1、配置文件 2、yaml概述 3、yaml基础语法 3.1、字面量:普通的值【数字、布尔值、字符串】 3.2、对象、Map(键值对) 3.3、行内写法: 3.4、数组(list、set) 二、注入配置文件 1、yaml注入配置文件…

selenium\webdriver\remote\errorhandler.py:242: SessionNotCreatedException问题解决

报错信息: raise exception_class(message, screen, stacktrace) E selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 112 E Current browser versi…

超强,Pytest自动化测试框架 fixture 传参实战(案例)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 为了提高复用性&a…

企业邮箱如何设置分级管理员

给邮局设置成员后,有的时候会分为多个分组,那么就需要设置分级管理员,分级管理员可以管理所属部门或群组的成员,为企业邮局的管理提供了更多的便利。设置方法如下: 例:我们要将销售分公司的高阳&#xff0…

MAYA粒子粘性

粒子被挡下来了

SpringBoot使用post方式上传文件

文章目录 SpringBoot使用post方式上传文件1.上传文件代码2.postman测试 SpringBoot使用post方式上传文件 1.上传文件代码 PostMapping("/upload/v1")public ResponseMsg<Map<String,Object>> fileUpload(RequestParam("file") MultipartFile …

java中对象的比较详解

一、问题背景 我们先来看这样一个背景&#xff0c;如果有一个学生类&#xff0c;成员属性有姓名name(String),年龄age(int),分数score(double). public class Test {class student{String name;int age;double score;public student(String name, int age, double score) {th…

【ubuntu】设置国内镜像源

ubuntu清华镜像源 备份 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak 新建 sudo touch /etc/apt/sources.list sudo vi /etc/apt/sources.list 添加内容 # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb https://mirrors.tuna…

想不想知道智能配音怎么弄

配音是一种将人的声音与影像相结合的技术&#xff0c;可以为电影、动画、广告等视频内容提供声音和情感上的支持。当观众看到画面中的角色在说话时&#xff0c;如果有配音&#xff0c;则更容易进入故事情节并深入参与其中。对于一些需要讲述复杂信息的内容&#xff0c;通过配音…

Redis实战案例7-缓存雪崩及其解决思路

1. 缓存雪崩 如果缓存集中在一段时间内失效或者Redis服务宕机&#xff0c;所有的查询都落在数据库上&#xff0c;造成了缓存雪崩。 2. 解决思路 给不同的key的TTL添加随机值 在缓存的时候给过期时间加上一个随机值&#xff0c;这样就会大幅度的减少缓存在同一时间过期。 利用R…

PHP TP5.0框架会员根据经验值升级等级

// 初始化最小差值为一个较大的数 $minDifference 500000; 先看一下会员等级表规则的表结构 普通会员默认注册就是&#xff0c;经验值0 1.先查询出最高等级所需要的经验值 //先查询最高等级所需要的经验值 $b Db::name(wechat_user_vip)->order(id DESC)…

【bug解决】Could not resolve ‘us.archive.ubuntu.com‘

解决步骤&#xff1a; 1、备份 /etc/resolv.conf 文件 sudo cp /etc/resolv.conf /etc/resolv.conf.bak 2、修改/etc/resolv.conf 文件 # 编辑文件 sudo vi /etc/resolv.conf# 修改nameserver变量值 nameserver 8.8.8.8esc -> :wq!3、重启network服务 /etc/init.d/netwo…

【二】构造函数和原型

ES6&#xff08;ECMAScript 6.0&#xff09;之前js没有引入类的概念 在ES6之前&#xff0c;对象不是基于类创建的&#xff0c;而是用一种称为构建函数的特殊函数来定义对象和它们的特征 ES6之前创建对象可以通过以下三种方式创建对象&#xff1a; 对象字面量&#xff1a; v…

前端vue入门(纯代码)17

不管何时何地&#xff0c;永远保持热爱&#xff0c;永远积极向上&#xff01;&#xff01;&#xff01; 【19.尚硅谷GitHub案例】 1.静态GitHub搜索案例的静态文件&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head><meta cha…

RNN其中的X.reshape

假设RNN中的输入为2528&#xff0c;2是batchsize可以理解为有几句话&#xff0c;5是timestep可以理解为有几个词&#xff0c;28是vocab_size。如下就是两个句子&#xff0c;每个句子由5个单词组成。28则为每个单词的词向量&#xff0c;在此略去。 在输入的时候&#xff0c;首先…