Vue之修改数据页面不更新的问题

 更新时间:2023年12月29日 10:11:02   作者:williamyi74  
这篇文章主要介绍了Vue之修改数据页面不更新的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

第一种场景

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

第二种场景

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

解决方法1

静默刷新(使用v-if的特性)

在修改值之后将元素销毁,然后在修改后的下一次DOM渲染完成时再显示出来,这样就会触发组件重新加载data的数据进行渲染,data中被修改的数据才是最新的

解决方法2

Vue.$set(官方推荐)

官方对这个API的解释就是使用这个api修改的数据会为其添加响应式getter和setter让其拥有数据响应的特性

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

解决方法3

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

因为Vue修改数据是异步执行的,所以视图不会立即更新,会等到下一次dom更新循环结束后统一更新发生在这一次循环中修改的数据,然后同步视图更新,所以我们可以修改后自己手动强制更新视图

解决方法4

Object.assign(使用修改栈能触发视图更新的特性,借鉴React的写法)

我们都知道Object.assign能拷贝合成一个新对象,所以我们只需要将要修改的值合并成一个新对象然后赋值给data中的对象或数组,这样栈的指向被修改了.触发视图更新

解决方法5

对于数组还可以使用splice方法(Vue对于数组的操作能识别变化的api包括splice):

this.arr.splice(你要修改的元素索引位置,1,修改后的值)    这是修改操作

  • 示例:修改a
this.obj.splice(0, 1, {
 a: 456
});

this.arr.splice(你要添加到哪个元素的前面就写那个元素的索引+1,0,要添加的值)     这是添加操作

  • 示例:添加b
this.obj.splice(1, 0, {
 b: 456
});

this.arr.splice(你要删除的元素索引,1)   这是删除操作

  • 示例:删除a
this.obj.splice(0, 1);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue项目如何实现切换主题色思路

    Vue项目如何实现切换主题色思路

    这篇文章主要介绍了Vue项目如何实现切换主题色思路,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue中的数据驱动解释

    Vue中的数据驱动解释

    这篇文章主要为大家介绍了Vue中的数据驱动解释,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • vue中实现千位分隔符的示例代码

    vue中实现千位分隔符的示例代码

    本文主要介绍了vue中实现千位分隔符的示例代码,主要两种方法,一种是某一个字段转换,一种是表格table中的整列字段转换,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • vue3中el-table实现多表头并表格合并行或列代码示例

    vue3中el-table实现多表头并表格合并行或列代码示例

    这篇文章主要给大家介绍了关于vue3中el-table实现多表头并表格合并行或列的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用vue具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-02-02
  • 详解Vue.js 可拖放文本框组件的使用

    详解Vue.js 可拖放文本框组件的使用

    这篇文章主要介绍了详解Vue.js 可拖放文本框组件的相关资料,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-03-03
  • 使用vue3实现element-plus的主题切换效果

    使用vue3实现element-plus的主题切换效果

    Vue3 Element Plus是一个基于Vue 3框架的UI组件库,它是由Element UI团队开发的升级版本,Element Plus延续了Element UI简洁、高效的风格,并引入了一些新的设计语言和技术,如响应式API和更好的性能优化,本文给大家介绍了如何使用vue3实现element-plus的主题切换效果
    2024-12-12
  • Vue-drag-resize 拖拽缩放插件的使用(简单示例)

    Vue-drag-resize 拖拽缩放插件的使用(简单示例)

    本文通过代码给大家介绍了Vue-drag-resize 拖拽缩放插件使用简单示例,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Laravel 如何在blade文件中使用Vue组件的示例代码

    Laravel 如何在blade文件中使用Vue组件的示例代码

    这篇文章主要介绍了Laravel 如何在blade文件中使用Vue组件,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • vue中data和props的区别详解

    vue中data和props的区别详解

    这篇文章主要介绍了vue中data和props的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习吧
    2024-01-01
  • 基于vue实现一个神奇的动态按钮效果

    基于vue实现一个神奇的动态按钮效果

    今天我们将利用vue的条件指令来完成一个简易的动态变色功能按钮,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-05-05

最新评论