vue强制刷新组件的3种方法

简介: vue强制刷新组件的3种方法

通过组件的key值来刷新

(当某个组件的key变化后,组件都会被重新渲染一遍)

<template>
  <el-table
          :data="data"
          :key="refresh"
        >
        ...
  </el-table>
</template>
 
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  refresh= true
  
  @Watch('data')
  watchData() {
    this.refresh= !this.refresh
  }
}
</script>

还有通过if来刷新

(当v-if的值发生变化时,组件都会被重新渲染一遍)

<template>
  <el-table
          v-if="refresh"
          :data="data"
        >
        ...
  </el-table>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  refresh = true
  
  // 监视data是否发生变化
  @Watch('data')
  watchData() {
    // 移除组件
        this.refresh = false
        // this.$nextTick可实现在DOM 状态更新后,执行传入的方法。
        this.$nextTick(() => {
          // 重新渲染组件
            this.refresh = true
        })
  }
}
</script>

通过this $forceUpdate强制重新渲染

(如果要在组件内部中进行强制刷新,则可以调用this.$forceUpdate()强制重新渲染组件)

<template>
  <button @click="reflush()">刷新当前组件</button>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  reflush() {
      this.$forceUpdate()
  }
}
</script>
相关文章
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
958 2
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
857 137
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
1060 1
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
760 0
|
JavaScript
Vue的非父子组件之间传值
全局事件总线 一种组件间通信的方式,适用于任意组件间通信
371 0
|
缓存 JavaScript 前端开发
Vue Props、Slot、v-once、非父子组件间的传值....
Vue Props、Slot、v-once、非父子组件间的传值....
329 0
|
JavaScript
Vue中父子组件传值
先在⽗组件中给⼦组件的⾃定义属性绑定⼀个⽗组件的变量
342 0
|
JavaScript
vue 组件传值
vue 组件传值
326 0
|
JavaScript
vue父子组件传值
vue父子组件传值
|
JavaScript
Vue父子组件传值(porvide+inject实现组件通信)
如果我们需要把父组件的值传递给子组件,而且子组件可能存在层层嵌套,那么就可以使用provide+inject的方法来实现组件之间的通信
490 0
Vue父子组件传值(porvide+inject实现组件通信)