Vue数据响应式

作者: Sharp丶TJ | 来源:发表于2022-04-30 12:08 被阅读0次
本篇主要原理可在深入响应式原理章节可以找到

Vue对data做了什么?

1、getter和setter

这里引用一个非常形象的示例代码例子

通过这个代码中的例子,我们可以很直观的理解getter和setter的作用

2、Object.definePronperty
如果已经声明完了,想要添加缺添加不了,这时候就用Object.defineProperty

        let num = {
            age:20
        }
        let person={
            name:'小张',
            gender:'女'
        }
        Object.defineProperty(person,'age',{
            get(){
                return num.age
            },
            set(value){
                num.age = value
            }
        })

这要是一个最基础的数据代理


数据响应式

1、什么是响应式
能对外界的刺激做出反应,他就是响应式的(例如:我扎你一下你会喊疼,那你就是响应式的)

2、Vue的data是响应式

const vm = new Vue ({data:{n:0}})

如果我修改了 vm.n,那么UI中的 n 就会响应我
Vue2通过 Object.defineProperty 来实现数据响应式

补充:响应式网页 就是:如果我改变窗口大小,网页内容会做出响应,那他就是响应式网页

Vue 有 bug

1、Object.defineProperty 的问题

Object.defineProperty(obj, 'n' ,{...})
因为必须要有一个 'n' ,才能监听 & 代理obj.n
那如果因为有点水,忘了给 n 就会给出一个警告
例子一
例子二
例子二中,即使点击 set b ,也不会显示 1 。因为Vue没法监听一开始就不存在的obj.b

解决办法

( 1 )先把key都声明好
( 2 )使用Vue.set 或者 this.$set
例如:

Vue.set(this.obj, 'b' , 1)
this.$set(this.obj, 'b' , 1)
//他们是一模一样的,绝对等于的
Vue.set 和 this.$set 的作用

1、新增key
2、自动创建代理和监听(如果没有创建过)
3、被动触发UI更新(不会立刻更新,这是个异步操作)


给数组添加元素

用 Vue.set(this.array,3,'d') 实现数据响应
也可以用 this.array.push('d');实现数据响应,这个push是被Vue修改过的

PS:在给数组添加元素的时候,Vue.set 和 this.$set 可以:新增key 和 被动触发UI更新。但是 不会自动创建代理和监听


Vue内置用来 变异数组 的API,七个API被尤大所更改,调用后会更新UI

push( )
pop( )
shift( )
unshift( )
splice( )
sort( )
reverse( )

相关文章

  • 前端面试题【Day02】

    本篇绪论 1,Vue响应式原理 1,Vue响应式原理 在vue实例中声明的数据就是响应式的。响应式:数据发生改变,...

  • 2020-12-25

    Vue数据响应式 响应式:当一个物体对外界刺激做出反应,就是响应式。例如:我打你一拳你知道躲。 Vue 数据响应式...

  • Vue的响应式浅析

    1 Vue如何实现响应式? Vue的响应式是建立在监听data中的数据. 2 在Vue2中响应式的实现 Vue通过...

  • Vue源码03-响应式原理

    这节将专门讲解vue MVVM响应式处理 Vue采用的是 实现数据的响应式 数据劫持 Observer类 Obse...

  • 学习vue的响应式 mvvm -01 数据响应式

    理解VUE的设计思想:VUE的核心是MVVM MVVM框架的三要素:数据响应式 模板引擎以及渲染 数据响应式:监听...

  • Vue数据响应式

    1.什么是数据响应式 在 Vue 中,当 data 中的数据发生改变时,视图会进行更新,这就是Vue数据响应式的概...

  • 深入理解Vue数据响应式

    Vue数据响应式主要研究的是 Vue 构造选项中 data 属性的特性 深入响应式 官方文档 网址: https:...

  • VUE中数据响应式原理

    1.vue数据响应式的原理2.数据属性的四大特性3.访问器属性4.getter和setter vue数据响应式主要...

  • 双向绑定

    数据响应式原理 vue实现数据响应式的原理就是利用了Object.defineProperty(),重新定义了对象...

  • Vue 数据响应式原理

    前言 Vue.js 的核心包括一套“响应式系统”。 “响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码...

网友评论

    本文标题:Vue数据响应式

    本文链接:https://www.haomeiwen.com/subject/bxogjrtx.html