vue 关于数组和对象的更新

作者: a333661d6d6e | 来源:发表于2019-04-26 14:29 被阅读1次

    在日常开发中,我们用的最多的就是 绑定数据

    <div v-for="item in data" :key="item.id">
     <!-- 内容 -->
    </div>
    

    如果你有ng的开发经验,假设 data 你要更新数据了

    this.data=res.data;

    但是这在vue中 并不会起到作用,DOM并没有触发变化。

    vue不是已经实现的实时数据双向绑定,那么model层发生了变化之后,为什么view层没有更新呢???

    看官网 这里才发现 深入响应式原理 列表渲染

    vue 关于数组和对象的更新

    数组检测更细变异的方法

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

    注意事项

    由于 JavaScript 的限制,Vue 不能检测以下变动的数组:

    1. this.data[index] = res.data;

    2. this.data.length = 0;

    正确的操作方式

    1. Vue.$set(this.data, 1, {name:"huangenai",age:"22"})

    2. vm.items.splice(0)

    对象

    还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除:

    <script> 
    export default {
     data(){
     return {
     userProfile: {
     name: 'Anika'
     }
     user: {
     name: "huangenai",
     age: 12
     }
     }
     },
     mounted() {
     this.$set(this.userProfile, 'age', 27)
     this.user = Object.assign({}, this.user, {
     age: 22,
     name: "huangenai"
     });
     }
     }
    </script>
    

    Vue提供了如下的数组的变异方法,可以触发视图更新

    push()
    pop()
    shift()
    unshift()
    splice() 
    sort()
    reverse()
    //
    介绍一个全栈开发交流学习圈,欢迎加入Q群:864305860
    

    在日常开发中,我们用的最多的就是 绑定数据

    <div v-for="item in data" :key="item.id">
     <!-- 内容 -->
    </div>
    

    如果你有ng的开发经验,假设 data 你要更新数据了

    this.data=res.data;

    但是这在vue中 并不会起到作用,DOM并没有触发变化。

    vue不是已经实现的实时数据双向绑定,那么model层发生了变化之后,为什么view层没有更新呢???

    看官网 这里才发现 深入响应式原理 列表渲染

    vue 关于数组和对象的更新

    数组检测更细变异的方法

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

    注意事项

    由于 JavaScript 的限制,Vue 不能检测以下变动的数组:

    1. this.data[index] = res.data;

    2. this.data.length = 0;

    正确的操作方式

    1. Vue.$set(this.data, 1, {name:"huangenai",age:"22"})

    2. vm.items.splice(0)

    对象

    还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除:

    <script> 
    export default {
     data(){
     return {
     userProfile: {
     name: 'Anika'
     }
     user: {
     name: "huangenai",
     age: 12
     }
     }
     },
     mounted() {
     this.$set(this.userProfile, 'age', 27)
     this.user = Object.assign({}, this.user, {
     age: 22,
     name: "huangenai"
     });
     }
     }
    </script>
    

    Vue提供了如下的数组的变异方法,可以触发视图更新

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

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    加入我们一起聊天吹水学习

    为了帮助大家让学习变得轻松、高效,大家可以加入我们交流圈子吹水学习交流:619586920欢迎大家进群交流讨论,学习交流,共同进步。

    相关文章

      网友评论

        本文标题:vue 关于数组和对象的更新

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