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路由第二次进入页面created和mounted不执行问题及解决

    vue路由第二次进入页面created和mounted不执行问题及解决

    这篇文章主要介绍了vue路由第二次进入页面created和mounted不执行问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Vue3自定义打印实现原理详解

    Vue3自定义打印实现原理详解

    近接触到了一个 Vue3 的打印需求,我发现自己虽然从事前端开发已有多年,但对如何实现自定义打印还没有深入研究,一般都是找现成的库来解决问题,借这次的机会研究了一下如何实现自定义打印,需要的朋友可以参考下
    2024-07-07
  • Vue3源码分析组件挂载创建虚拟节点

    Vue3源码分析组件挂载创建虚拟节点

    这篇文章主要为大家介绍了Vue3源码分析组件挂载创建虚拟节点,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Vue3 elementUI如何修改el-date-picker默认时间

    Vue3 elementUI如何修改el-date-picker默认时间

    这篇文章主要介绍了Vue3 elementUI如何修改el-date-picker默认时间,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue element upload实现图片本地预览

    vue element upload实现图片本地预览

    这篇文章主要为大家详细介绍了vue element upload实现图片本地预览,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • VUE配置history路由模式配置详细举例

    VUE配置history路由模式配置详细举例

    这篇文章主要给大家介绍了关于VUE配置history路由模式配置的相关资料,History模式是Vue路由的另一种模式,在History模式下URL中的路径不再使用#符号,而是直接使用正常的路径形式,需要的朋友可以参考下
    2023-12-12
  • vue-treeselect显示unknown的问题及解决

    vue-treeselect显示unknown的问题及解决

    这篇文章主要介绍了vue-treeselect显示unknown的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • VUE中使用滚动组件-vueSeamlessScroll

    VUE中使用滚动组件-vueSeamlessScroll

    这篇文章主要介绍了VUE中使用滚动组件-vueSeamlessScroll,需要的朋友可以参考下
    2023-10-10
  • 浅谈Vue SSR 的 Cookies 问题

    浅谈Vue SSR 的 Cookies 问题

    本篇文章主要介绍了浅谈Vue SSR 的 Cookies 问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Vue3安装dataV报错问题解决方案

    Vue3安装dataV报错问题解决方案

    这篇文章主要给大家介绍了关于Vue3安装dataV报错问题解决方案的相关资料,dataV用于大屏展示,个人觉得比echarts简单很多,需要的朋友可以参考下
    2023-06-06

最新评论