vue3响应式原理 简单好理解 不罗嗦 你必须知道

本文通过实例讲解了响应式编程中的数据变化如何触发视图更新,介绍了Proxy对象在监听和修改对象属性时的get和set方法应用。作者以一年级班级管理为例,展示了如何使用Proxy来动态更新黑板上的学生姓名,体现了数据驱动视图的响应式特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

响应式也就是数据发生了变化视图也随之更新 这其中包含三个步骤 

1 监听对象 2 得到这个对象的信息 3 这个对象发生了什么变化 

想象一个场景 这是一年级的班级 里面有10个同学 现在你就是他们的代理班主任了 我要随时向你要每位同学的信息以及他们发生了信息变化也要告诉我

// 定义个班级和里面的学生
let class = {
    student1 : '小王',
    student2 : '小红',
    student3 : '小明',
    student4 : '舒先生',
    student5 : '小郑',
    student6 : '小李',
    student7 : '小光',
    student8 : '小和',
    student9 : '小伟',
    student10 : '小兰',
}

接下来我们通过proxy代理将班级托付给你了 

// 将班级托付给你

let goodBoy = new Proxy (class, {
    get(target,property) { //当我们页面渲染使用ref包裹的数据 就是通过get获取的
    // target就是class  可以当作student property就是里面的谁谁谁 比如student
    return target[property] //返回 class.student
 }
})

亲爱的班主任 请告诉我你们班第2个学生叫什么名字 他昨天乱扔垃圾 我要在黑板(页面)上写上他的名字(使用这个数据)

//获取班级里面学生的信息就会触发get方法
console.log(goodBoy.student2)// 此时返回值是小红 黑板上就写上了小红的姓名 
// 但是为了女同学的面子 你这个代理班主任决定通过set方法将小红的姓名换成一个假名字

到这里 已经实现代理和获取代理对象 接下来修改姓名 然后调用set方法 将student2的学生姓名改变 这样黑板上写的姓名也会发生变化

// 数据发生变化改变黑板的姓名

goodBoy.student2 = '爱情公寓张伟'

//数据发生了变化 proxy的set要开始干活了 我们来看看proxy内部set是如果工作的

let goodBoy = new Proxy (class, {

    get(target,property) {

    return target[property]
 },
    
    set(target,property,newValue){
    
    targer[property]=newValue 
    //这一步就像是在说 class班级里面的小红的名字等于爱情公寓张伟
}
})

到这里 响应式原理已讲完 希望大家能希望 明天讲闭包 喜欢的可以关注哦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值