美文网首页
Vue数据响应原理

Vue数据响应原理

作者: 码上行动 | 来源:发表于2019-03-02 22:40 被阅读0次

我们知道当Vue data实例对象下的数据发生改变,视图会随之改变,那么它是遵循的什么底层原理呢?相信大家一定很好奇,那么接下来就让我们一探究竟吧~

<div id="app">
    <h1>title : {{title}}</h1>   //title : xx 视图随之更新
    <h1>url : {{url}}</h1>     //url : www.baidu.com
</div>
<script type="text/javascript">
    var data = { title: "百度", url: "www.baidu.com", }
    var app = new Vue({
        el: '#app',
        data: data
    })

    修改app  data实例对象下的title属性
    app.title= "xx"
    document.write(data.title )
</script>

如上图所示,在js中手动修改了data实例对象下title的值 ,视图会随之显示新值。

接下来我们用ES5当中的get和set演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="box">hello</div>
</body>
<script>

 var obj={
    name:"veb",
    get_name:function(){
        console.log("有人访问了name的值")
        return this.name;
    },
    set_name:function(val){
        console.log("有人修改了name的值")
        this.name=val;
     }
 }

 console.log(obj.get_name())
</script>

在控制台输入obj.get_name()可获取neme的值,输入obj.set_name(123)可修改neme的值 ,视图随set设置更新,可见vue数据响应原理(双向绑定原理):给data中的属性添加set,依赖于ES5的defineproperty;

Vue.set()

Vue内置的set方法

官方解释是:设置对象的属性。如果对象是响应式的,确保属性被创建后也是响应式的,同时触发视图更新。这个方法主要用于避开 Vue 不能检测属性被添加的限制。

Vue.set(a,b,c)

a是要更改的数据

b是数据的第几项

c是更改后的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="vue.js"></script>
</head>
<body>
    <div id="app">
         <ul>
             <li v-for="item in listData">{{item}}</li>
        </ul>
        <a href="" v-text="he" @click="changeData()"></a>
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            he:"点我",
            listData:["a","b","c"]
          },
        methods:{
              changeData () {
                  Vue.set(this.listData,0,'X')
              }
            }
    })
</script>
</html>

效果如下:

1.png

相关文章

  • 前端面试题【Day02】

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

  • Vue的34道题

    1、如何理解MVVM原理? MVVM的实现原理 2、响应式数据的原理是什么? 响应式数据与数据依赖基本原理vue双...

  • 双向绑定

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

  • 面试总结之基础(2)

    Vue2响应式原理 Vue3响应式原理

  • 手写 Vue Router、手写响应式实现、虚拟 DOM 和 D

    模拟 Vue.js 响应式原理 一、数据驱动 准备工作 数据驱动 响应式的核心原理 发布订阅模式和观察者模式 数据...

  • VUE中数据响应式原理

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

  • vue系列--- vue响应式原理

    vue响应式原理 要说vue响应式原理首先要说的是Object.defindProperty(),这个是响应式原理...

  • Vue原理

    vue原理相关 Vue核心概念 vue实例化 虚拟dom 模板编译 数据绑定(响应式) 组件化 MVVM mode...

  • Vue数据响应原理

    Vue 数据响应依赖于Object.defineProperty,这也是Vue不支持IE8的原因。Vue通过设定对...

  • Vue数据响应原理

    我们知道当Vue data实例对象下的数据发生改变,视图会随之改变,那么它是遵循的什么底层原理呢?相信大家一定很...

网友评论

      本文标题:Vue数据响应原理

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