Vue - 监测数据的原理、Vue.set、vm.$set

监测数据的原理

目录

监测数据的原理

一、更新时的问题

二、Vue检测对象

三、Vue检测数组

3.1 push 添加

3.2 shift 删除

3.3 splice 替换

3.4 原理

四、Vue.set

4.1 追加属性

4.2 案例

五、总结

5.1 代码练习

5.2 总结


一、更新时的问题

为什么我们要研究一下Vue监测数据的原理

以防我们后续在给data赋值或者修改data中数据时导致修改不成功

比如下面这个例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title> 初识vue</title>
        <!--引入vue    引入之后,全局就多了一个vue这个构造函数-->
        <script type="text/javascript" src="../js/vue.js"></script> 
    </head>
    <body>
        <div id="root">
            <h2>人员列表</h2>
       &lt;button &#64;click&#61;&#34;updateMei&#34;&gt;更改马冬梅信息&lt;/button&gt;
        &lt;ul&gt;
            &lt;li v-for&#61;&#34;(p,index) in  persons&#34; :key&#61;&#34;p.id&#34; &gt;
                {<!-- -->{p.name}}-{<!-- -->{p.age}}-{<!-- -->{p.sex}}
            &lt;/li&gt;
        &lt;/ul&gt;

    &lt;/div&gt;

    &lt;script type&#61;&#34;text/javascript&#34;&gt;
        //阻止vue在启动时生成生产提示
        Vue.config.productionTip&#61;false
        
      const vm&#61;  new Vue({
            el:&#39;#root&#39;,
            data:{

              persons:[
                {id:&#39;001&#39;,name:&#39;马冬梅&#39;,age:19,sex:&#39;女&#39;},
                {id:&#39;002&#39;,name:&#39;周冬雨&#39;,age:20,sex:&#39;女&#39;},
                {id:&#39;003&#39;,name:&#39;周杰伦&#39;,age:21,sex:&#39;男&#39;},
                {id:&#39;004&#39;,name:&#39;温兆伦&#39;,age:22,sex:&#39;男&#39;}
              ],
             
            },
            methods: {
                updateMei(){
                    this.persons[0].name &#61; &#39;马老师&#39;
                    this.persons[0].age &#61; 50,
                    this.persons[0].sex &#61; &#39;男&#39;
                }
            },
        })

    &lt;/script&gt;   
&lt;/body&gt;

</html>

当我们点击按钮之后,马冬梅的信息会随之改变

img

我们不难发现:页面中的内容修改了,Vue中的数据也修改了

              
  methods: {
                    updateMei(){
                        //this.persons[0].name = '马老师'
                        //this.persons[0].age = 50,
                        //this.persons[0].sex = '男'
                         this.persons[0] ={id:'001',name:'马老师',age:50,sex:'男'}
                    }
                },

初始界面和上面还是相同的,但是我们<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值