详解vue数据响应式原理之数组

 更新时间:2022年02月13日 12:06:30   作者:前端阿龙  
这篇文章主要为大家详细介绍了vue数据响应式原理之数组,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

src/core/observer/index.js

在这里插入图片描述

src/core/observer/array.js arrayMethods

在这里插入图片描述

  • 当data的数组对象中本来没有某个属性,然后点击按钮动态增加某个属性的时候,此时此属性是没有get和set的,也就是没有响应式机制,如果想要让你动态增加的某个属性有响应式变化,那么就直接在数据的源头给他初始化这个属性,具体看下一条。
  • 当向后端返回的结果的数组对象中新增属性的时候,建议首先循环赋值完成之后再赋值给对应的data中的变量,这样data中变量给每个数组对象里面的属性都会加上get和set
  • 例如:后端返回一个数组对象是 [{xx: 1},{xx: 2}],然后我们获取到这个数组对象后把这个数组对象赋值给了this.list,那么我的data中的list的两个数组对象中的xx属性就有get和set了,换句话说就是响应式的了,如果我们想要点击按钮的时候动态给当前数组对象中增加一个cc属性,this.list[0].cc = 2, 请注意 此时cc属性虽然添加到了我们对应的数组对象中,但是它不是响应式的,想要解决这个问题,那就直接在获取后端的数据的时候直接循环添加cc属性,设置为空,然后再赋值给this.list就行了

调试

在这里插入图片描述

  • 我们可以看到上面的数组在最开始第一步的时候只有[1,2,3] 三个元素,然后当我们执行了push方法后增加了一个元素,且视图也实时更新了,这是因为在源码中vue对修改数组的方法做了响应式的处理
  • 我们再看第三第四部修改list数组也生效了,但是视图并没有实时更新,这是因为vue在对数组的处理上面只修改了一些数组的方法和对数组中对象增加了响应式的操作,这是因为数组可能有很长,出于性能的考虑,没有对数组的每一个元素都做响应式的处理。如果我们想实现第三第四步响应式可以使用数组的splice方法就行了

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!      

相关文章

  • 浅析Vue2/Vue3中响应式的原理

    浅析Vue2/Vue3中响应式的原理

    这篇文章主要是来和大家一起讨论一下Vue2与Vue3中响应式的原理,文中的相关示例代码简洁易懂,对我们深入了解Vue有一定的帮助,需要的可以参考下
    2023-07-07
  • vue3点击按钮下载文件功能的代码实现

    vue3点击按钮下载文件功能的代码实现

    在写vue项目时,有个需求是点击表格中某一行的下载按钮,然后开始下载这一行对应的文件,所以本文小编给大家介绍了使用vue3实现点击按钮下载文件功能,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-01-01
  • 关于vuex强刷数据丢失问题解析

    关于vuex强刷数据丢失问题解析

    这篇文章主要介绍了关于vuex强刷数据丢失问题解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • vue3中vue.config.js配置及注释详解

    vue3中vue.config.js配置及注释详解

    在Vue 3.0中,与2.0版本相比有一定的差别,最明显的就是缺少了build、config文件夹,下面这篇文章主要给大家介绍了关于vue3中vue.config.js配置及注释的相关资料,需要的朋友可以参考下
    2022-08-08
  • 详解Vue2.x-directive的学习笔记

    详解Vue2.x-directive的学习笔记

    这篇文章主要介绍了详解Vue2.x-directive的学习笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vue数据操作之点击事件实现num加减功能示例

    vue数据操作之点击事件实现num加减功能示例

    这篇文章主要介绍了vue数据操作之点击事件实现num加减功能,结合实例形式分析了vue.js事件响应及数值运算相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 记录--使用el-time-picker默认值遇到的问题

    记录--使用el-time-picker默认值遇到的问题

    这篇文章主要介绍了记录--使用el-time-picker默认值遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 详解vue-router导航守卫

    详解vue-router导航守卫

    今天小编就为大家分享一篇关于详解vue-router导航守卫,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Vue中的匿名插槽与具名插槽详解

    Vue中的匿名插槽与具名插槽详解

    这篇文章主要为大家介绍了Vue中的匿名插槽与具名插槽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 使用vue导出excel遇到的坑及解决

    使用vue导出excel遇到的坑及解决

    这篇文章主要介绍了使用vue导出excel遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论