vue数据变化但页面刷新问题

 更新时间:2022年04月22日 11:05:33   作者:口袋の的天空  
这篇文章主要介绍了vue数据变化但页面刷新问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue数据变化但页面刷新

watch监听到数据的变化但页面没有刷新

在数据改动的代码后加 this.$forceUpdate();

添加this.$forceUpdate();进行强制渲染,效果实现。因为数据层次太多,render函数没有自动更新,需手动强制刷新。

没有监听到数据的变化

例如:

改变了数组中的某一项或者改变了对象中的某个元素时,监听则未生效。

数组若要触发监听,下面方法即可触发

如:splice(),push() 等js方法

当然了,也可以使用vue中的方法 this.$set(object, index, new)

this.$set()方法是vue自带的可对数组和对象进行赋值,并触发监听的方法。

  • 第一个参数为你要改变的数组或对象
  • 第二个参数为下标,或者元素名称
  • 第三个参数为新值 

改变了数据却没有自动刷新

有两个按钮,按钮上有个number属性,当此值为偶数时,按钮显示为红色。

最初的数据如下:

"a": [{ name: "one" },{ name: "two",number: 2 }]

现象如下:当点击第一个按钮时,数据变了,界面却没有相应刷新;这是再点击第二个按钮,发现第二个按钮是正常的,并且当第二个按钮刷新的时候,第一个按钮也跟着刷新了。

原因在于:a.number=undefined,这是一个常量,当第一次渲染时,第一个按钮的class并没有和第一个对象的属性number进行绑定,所以当number变化时,不会触发界面刷新。当第二个按钮导致界面刷新时,第

一个按钮也会跟着刷新界面。vue中提供了Vue.$forceUpdate()方法用于强制界面刷新。

说下结论

在绑定属性时,不要绑定undefined的属性,否则无法及时触发界面刷新。

<template>
  <div>
    <span v-for="(x,ind) in a"
      :key="ind"
      @click="clickSpan(x)"
      :class="{redNumber:x.number%2==0}">
      {{x.name}}: {{x.number}}
    </span>
  </div>
</template>
<script>
export default {
  data() {
    return {
      "a": [{ name: "one" },{ name: "two",number: 2 }]
    }
  },
  methods: {
    clickSpan(x) {
      if (!x.number) x.number = 0;
      x.number += 1
    }
  }
}
</script>
<style>
.redNumber {
  color: red;
}
* {
  font-size: 20px;
  user-select: none;
}
</style>

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

相关文章

  • 解决vue-cli项目sourcemap因为文件重名导致的文件定位映射错误问题

    解决vue-cli项目sourcemap因为文件重名导致的文件定位映射错误问题

    这篇文章主要介绍了解决vue-cli项目sourcemap因为文件重名导致的文件定位映射错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vue 本地环境跨域请求proxyTable的方法

    vue 本地环境跨域请求proxyTable的方法

    今天小编就为大家分享一篇vue 本地环境跨域请求proxyTable的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue3实现旋转图片验证

    vue3实现旋转图片验证

    这篇文章主要为大家详细介绍了vue3实现旋转图片验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解vue3中setUp和reactive函数的用法

    详解vue3中setUp和reactive函数的用法

    这篇文章主要介绍了vue3函数setUp和reactive函数的相关知识及setup函数和reactive函数的注意点,通过具体代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • vue3+ts数组去重方及reactive/ref响应式显示流程分析

    vue3+ts数组去重方及reactive/ref响应式显示流程分析

    这篇文章主要介绍了vue3+ts数组去重方法-reactive/ref响应式显示,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • vue3+vite多项目多模块打包(基于vite-plugin-html插件)

    vue3+vite多项目多模块打包(基于vite-plugin-html插件)

    这篇文章主要给大家介绍了关于vue3+vite基于vite-plugin-html插件实现多项目多模块打包的相关资料,现在很多小伙伴都已经使用Vite+Vue3开发项目了,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • vue3中使用swiper的完整版教程(超详细!)

    vue3中使用swiper的完整版教程(超详细!)

    工作中日常笔记,vue中使用swiper插件,在pc端和h5端也是常用的插件,下面这篇文章主要给大家介绍了关于vue3中使用swiper的完整版教程,需要的朋友可以参考下
    2023-04-04
  • vue2.0基于vue-cli+element-ui制作树形treeTable

    vue2.0基于vue-cli+element-ui制作树形treeTable

    这篇文章主要介绍了vue2.0基于vue-cli+element-ui制作树形treeTable,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue render函数动态加载img的src路径操作

    vue render函数动态加载img的src路径操作

    这篇文章主要介绍了vue render函数动态加载img的src路径操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 关于怎么在vue项目里写react详情

    关于怎么在vue项目里写react详情

    本篇文章是在vue项目里写tsx的一篇介绍。其实vue里面写jsx也挺有意思的,接下来小编九给大家详细介绍吧,感兴趣的小伙伴请参考下面的文章内容
    2021-09-09

最新评论