vue2修改数组或对象,但视图不刷新

这篇具有很好参考价值的文章主要介绍了vue2修改数组或对象,但视图不刷新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:我们在vue2开发过程中会碰到数据更新,但是页面并未改变的情况,原因如下:

        第一种:动态给对象新增属性或者删除属性是不会触发视图刷新的,Vue识别不到;

        第二种:通过数组下标修改数组中的元素或者手动修改数组的长度,Vue识别不到;

vue2修改数组或对象,但视图不刷新

vue2修改数组或对象,但视图不刷新 

解决办法:

1. Vue.$set(官方推荐)

        this.$set(要操作的对象或数组, 要新增或者修改的数组或对象key, 对应的值)

    change() {
      this.$set(this.obj.list, 0, {...this.obj.list[0],age:28}) //只修改数组中某个元素的某个属性
      this.$set(this.obj.list, 1, { name: '小红',age: 18})
      
  
    },

2. v-if静默刷新

    <div v-if="bol">
      <div v-for="item in obj.list">
        {{item.name}}
      </div>
      <button @click="change">修改</button>


    </div>
    change() {
      this.bol = false
      this.obj.list[1] = {
        name: '小红',
        age: 18
      }
      this.bol = true
    },

3. Vue.$forceUpdate(手动强制更新视图)

    change() {
      this.obj.list[0] = {
        ...this.obj.list[0],
        age: 28
      }
      this.obj.list[1] = {
        name: '小红',
        age: 18
      }
      this.$forceUpdate()
    },

4.Object.assign(使用修改栈能触发视图更新的特性)

    change() {
      this.obj.list[0] = {
        ...this.obj.list[0],
        age: 28
      }
      this.obj.list[1] = {
        name: '小红',
        age: 18
      }
      this.obj = Object.assign({},{
        ...this.obj
      })
    },

5.对于数组还可以使用splice方法push()、pop()、shift()、unshift()、splice()、sort()、reverse()文章来源地址https://www.toymoban.com/news/detail-511651.html

    change() {
      this.obj.list[0] = {
        ...this.obj.list[0],
        age: 28
      }
      this.obj.list[1] = {
        name: '小红',
        age: 18
      }
      this.obj.list = this.obj.list.concat([])
    },

到了这里,关于vue2修改数组或对象,但视图不刷新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Vue数组数据变化了,赋值后视图没更新的问题

    最近遇到一个问题,表格数据变化了,直接赋值后视图没更新,打印表格数据发现是最新的数据,这主要是因为,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。

    2024年02月02日
    浏览(31)
  • Vue 循环map对象拿到key值和value值,VUE 获取对象{}的key值,vue根据对象id删除数组中的对象,实现局部刷新的功能,vue中JS 对象动态添加键值对 vue中JS 对象动态添加键值对

    适用场景: vue中定义的map对象 map : { name : \\\'xxx\\\' } 接口回显map格式的数据 data :{ key : value} 都可以通过以下方式拿到key和value的值 VUE 获取对象{}的key值  vue根据对象id删除数组中的对象,实现局部刷新的功能 方法一:使用过滤器 注:这个一般是根据对象id 方法二:使用splice() 注

    2024年02月16日
    浏览(34)
  • Vue中form表单校验rules的问题(对象数组过滤新对象数组 ,对象校验,数组校验,)

    const data = reactive({ form: { js //往数组中添加这八个相机配置参数 for(var i=0;i8;i++){ const clonedLightObject1 = { …data.form.lightObject1 }; clonedLightObject1.productNameId=pid clonedLightObject1.cameraType=i clonedLightObject1.shootingNumber=1 页面

    2024年02月08日
    浏览(39)
  • vue数据更新但视图(DOM)不刷新解决办法

    第一种:强制更新dom 第二种:vue.$set(要操作的对象或数组, 对象key/索引, 修改后的值) 第三种: vue.$forceUpdate() 对此有什么疑问 或者 其它前端面临的问题都可以来欢迎评论  在下知道的定会帮你回答希望能够帮到你 (#^.^#)

    2024年02月11日
    浏览(28)
  • 【vue2+element ui】添加修改共用表单的下拉框回显问题分析以及解决方案(附共用表单代码)

    简介 本人前端水平不佳,本文分享在编写个人项目前端代码的时候遇到的回显问题的解决办法,仅供参考。 问题复原 首先展示表单中的问题代码,本次前端的设计是添加和修改操作共用表单,但是其中有一个下拉框展示形式,按照惯例通过:value进行双向绑定,保证点击修改

    2024年02月07日
    浏览(33)
  • vue的element ui使用el-table组件实现懒加载树、默认自动展开层级(一层,二层)、并且解决新增、删除、修改之后树节点不刷新问题

    问题 :数据量太大了,导致接口返回数据时间较长。 解决 : 将ElementUi中Table组件加载改为懒加载(查看文档)。 思路 :初始化打开页面时只显示第一级菜单,用户点击展开菜单之后往后端发送请求,然后加载出一级子菜单;后台只用有一个根据菜单id查询他子菜单的接口就可以

    2024年01月16日
    浏览(31)
  • uniapp小程序:追加数组中的对象属性,属性数据已经添加,视图不会改变

    场景复现: 由于业务需要,需要给数组中的每一个对象添加一个ischecked属性(Boolean)来控制复选框的选中状态,于是: 注意:buycargoodslists为数据源,初始数据源没有定义isChecked属性 结果可想而知,在控制台查看操作后的数据源buycargoodslists:确实属性isCheck已经插进去了,但

    2024年02月12日
    浏览(28)
  • 小程序setData修改数组和对象

    Page({   data: {     arrs:[       { text: \\\'0概率固定\\\', value: 0 },       { text: \\\'1累计固定\\\', value: 1 },       { text: \\\'2概率随机\\\', value: 2 },       { text: \\\'3概率赠送\\\', value: 3 },       { text: \\\'4保夹模式\\\', value: 4 },       { text: \\\'5累计随机\\\', value: 5 },  

    2024年02月09日
    浏览(26)
  • vue2 如何监听数组的变化

    在Vue 2中,底层是通过重写数组的原型方法来实现对数组变化的监听。具体来说,Vue 2使用了一个名为Observer的类来劫持数组的原型方法,使其在调用这些方法时能够触发相应的变化通知。 当Vue 2初始化一个响应式对象时,如果对象是一个数组,Vue会将数组的原型指向一个经过

    2024年02月12日
    浏览(36)
  • Vue2 、vue3 监听对象的变化

    vue响应式也叫作数据双向绑定 MVVM模型 (Model-Viem-ViewModel) DOM listeners:实现了页面与数据的绑定,当页面操作数据的时候 DOM 和 Model 也会发生相应的变化 Data Bindings:  实现了数据与页面的绑定,当数据发生变化的时候会自动渲染页面 2.1  实现原理 vue实现数据响应式,是通过

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包