vue数组和对象响应式数据处理踩过的坑

做项目时踩到的坑,在前端通过axios.get向后台请求数据,通过params传递一个对象,当通过this.getUserparams.pagesize=val直接修改传递对象的值时,发现后台请求的数据没有发生改变,此时修改的数据并不是响应式的数据。
要修改对象或者数组中的值并想要进行响应式处理的时候需要通过set方法进行修改:

Vue.set(this.getUserparams, 'pagesize', val)
或者
this.$set(this.getUserparams, 'pagesize', val)(this指向的是Vue对象)

下面就写一个小demo

    <div id="app">
        <ul>
            <li v-for='item in list'>{{item}}</li>
        </ul>
    </div>
    <script>
            var vm = new Vue({
            el: '#app',
            data: {
                list: ['apple', 'orange', 'banana'],              
           		 }
            });
    </script>

当在浏览器控制台输入下边语句的时候,页面上显示的数据并不会响应式改变

        vm.list[0] = 'lemon';

只要当使用set方法时,页面数据才会动态修改

		vm.$set(vm.list, 1, 'lemon');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值