详解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方法就行了

总结

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

相关文章

  • vue实现文字滚动效果

    vue实现文字滚动效果

    这篇文章主要为大家详细介绍了vue实现文字滚动效果,公告滚动播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue项目中如何运用vuex的实战记录

    Vue项目中如何运用vuex的实战记录

    如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优,下面这篇文章主要给大家介绍了关于Vue项目中如何运用vuex的相关资料,需要的朋友可以参考下
    2021-09-09
  • vue2+element-ui使用vue-i18n进行国际化的多语言/国际化详细教程

    vue2+element-ui使用vue-i18n进行国际化的多语言/国际化详细教程

    这篇文章主要给大家介绍了关于vue2+element-ui使用vue-i18n进行国际化的多语言/国际化的相关资料,I18n是Vue.js的国际化插件,项目里面的中英文等多语言切换会使用到这个东西,需要的朋友可以参考下
    2023-12-12
  • vue中vee validate表单校验的几种基本使用

    vue中vee validate表单校验的几种基本使用

    这篇文章主要介绍了vee-validate表单校验的基本使用,需要的朋友可以参考下
    2018-06-06
  • Vue路由跳转的5种方式及扩展

    Vue路由跳转的5种方式及扩展

    这篇文章主要给大家介绍了关于Vue路由跳转的5种方式及扩展,在Vue中路由是一种用于导航和管理页面之间跳转的机制,Vue Router是Vue官方提供的路由管理器,需要的朋友可以参考下
    2023-11-11
  • vue设置默认首页的操作

    vue设置默认首页的操作

    这篇文章主要介绍了vue设置默认首页的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue拖拽组件使用方法详解

    vue拖拽组件使用方法详解

    这篇文章主要为大家详细介绍了vue拖拽组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 基于vite2+Vue3编写一个在线帮助文档工具

    基于vite2+Vue3编写一个在线帮助文档工具

    提起帮助文档,想必大家都会想到 VuePress等。但是VuePress是“静态网站生成器”,需要我们自行编写文档,然后交给VuePress变成网站。因此,本文将用vite2+Vue3编写一个在线帮助文档工具,需要的可以参考一下
    2022-03-03
  • vue 事件获取当前组件的属性方式

    vue 事件获取当前组件的属性方式

    这篇文章主要介绍了vue 事件获取当前组件的属性方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解Vue2.X的路由管理记录之 钩子函数(切割流水线)

    详解Vue2.X的路由管理记录之 钩子函数(切割流水线)

    本篇文章主要介绍了Vue2.X的路由管理记录之 钩子函数(切割流水线),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05

最新评论