美文网首页vue全解
vue面试题谈谈你对Vue 数据响应式的理解

vue面试题谈谈你对Vue 数据响应式的理解

作者: 饥人谷_小霾 | 来源:发表于2020-09-11 11:02 被阅读0次

什么是vue数据响应式

数据改变,UI页面做出响应。
当修改 Vue 实例中的 data 属性时,UI页面中的 data 会做出响应,Vue 是通过Object.defineProperty来实现数据响应的。
const vm = new Vue ({data:myDate})

image.png

Vue中如何实现数据响应式

1.通过getter和setter修改对象属性实现数据响应

Vue 中,用于设置 data 中的新增的 key 的 API 是Vue.set,vm.$set

//修改姓名
let obj3 = {
  姓: "yang",
  名: "kerry",
  age: 18,
  get 姓名() {
    return this.姓 + this.名;
  },
  set 姓名(xxx) {
    //设置姓名为obj3.姓名
    this.姓 = xxx[0];
    this.名 = xxx.substring(1);
  }
};
obj3.姓名 = "高圆圆";
console.log(`姓名:${obj3.姓}${obj3.名}`);

2.定义完成的对象通过Object.defineProperty(obj,'n',{value:4})添加属性

let data2 = {};
data2._n = 0;
Object.defineProperty(data2, "n", {
  get() {
    return this._n;
  },
  set(value) {
    if (value < 0) return;
    this._n = value;
  }
});
console.log(data2.n);//输出0
data2.n=-1
console.log(data2.n)//输出0,当n=-1<0data的属性n不变
data2.n=1
console.log(data2.n)//输出1

3.给数组添加元素

通过Vue.set(this.array,3,'d')实现数据响应
也可以通过this.array.push('d');实现数据响应

import Vue from "vue/dist/vue.js";

Vue.config.productionTip = false;

new Vue({
  data: {
    array: ["a", "b", "c"]
  },
  template: `
    <div>
      {{array}}
      <button @click="setD">set d</button>
    </div>
  `,
  methods: {
    setD() {
      Vue.set(this.array,3,'d');//可以实现添加d元素
      //this.array[3] = "d"; //请问,页面中会显示 'd' 吗?,不会显示
      // 等下,你为什么不用 this.array.push('d')
    }
  }
}).$mount("#app");

数组变异方式7个
push(),pop(),shift(),unshift(),splice(),sort(),reverse()会自动添加监听和代理,this.$set 作用于数组时,并不会自动添加监听和代理。set 了之后再用 this.array[n] += 1 是否会触发 UI 更新(答案是不会)

相关文章

  • vue面试相关

    javascript面试总结 谈谈你对MVVM开发模式的理解 Vue 有哪些指令? 简述Vue的响应式原理 Vue...

  • vue面试题谈谈你对Vue 数据响应式的理解

    什么是vue数据响应式 数据改变,UI页面做出响应。当修改 Vue 实例中的 data 属性时,UI页面中的 da...

  • 前端面试题【Day02】

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

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

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

  • vue数据响应式的实现(附图)

    根据对vue源码的理解,对vue的数据响应式做一个简单的实现。定义myvue,使用方式仿造vue,简单实现插值表达...

  • vue响应式原理

    谈谈阅读了vue深入响应式原理后的理解 1.响应式原理 在生成vue实例时,为对传入的data进行遍历,使用Obj...

  • 2020-12-25

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

  • Vue的响应式浅析

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

  • vue原理面试题资源整理

    vuex面试题 Vue生命周期 周期2 Vue通信 父子 兄弟 Vue响应式原理 MVVM Vue axios原理...

  • vue双向绑定原理

    理解vue的设计思想 MVVM模式 MVVM框架的三要素:数据响应式、模版引擎及其渲染 数据响应式:监听数据变化并...

网友评论

    本文标题:vue面试题谈谈你对Vue 数据响应式的理解

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