Vue 刷新组件

参考

强制 Vue 组件重新渲染的方法(一) - 掘金 (juejin.cn)

强制 Vue 组件重新渲染的方法(二) - 掘金 (juejin.cn)

环境搭建

创建组件model_a,模拟要刷新的组件,每当重新加载时,都会在控制台输出提示

xml 复制代码
<script setup>
import { onMounted } from 'vue'
onMounted(()=>{
  console.log("加载组件")
})
</script>

<template>
  <div>
    this is a
  </div>
</template>

<style scoped>
</style>

每当点击按钮时,都会去刷新组件

xml 复制代码
<script setup>
import { ref,nextTick } from 'vue'
import model_a from "./model_a.vue"
</script>

<template>
  <model_a></model_a>
  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>

演示

v-if

点击按钮后,flag的值会依次变为flase、true

重点是要等待dom操作结束后,再去更新flag状态由flase转化为true

多次点击后,也会对应的多次刷新组件页面

xml 复制代码
<script setup>
import { ref,nextTick } from 'vue'
import model_a from "./model_a.vue"

let flag = ref(true)
async function refresh(){
  flag.value = false
  await  nextTick()
  flag.value = true
}

</script>

<template>

  <model_a v-if="flag"></model_a>

  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>

key

每次点击按钮后,对应的key会依次加1,此时组件由于Key值变化会重新加载

xml 复制代码
<script setup>
import { ref } from 'vue'
import model_a from "./model_a.vue"

const flag = ref(1)
async function refresh(){
  flag.value += 1
  console.log(flag.value)
}

</script>

<template>

  <model_a :key="flag"></model_a>

  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>
相关推荐
IT_陈寒21 小时前
Vue3性能优化实战:这5个技巧让我的应用加载速度提升了40%
前端·人工智能·后端
小小鸟00821 小时前
Vue响应式原理
前端·javascript·vue.js
lee57621 小时前
鄙人的 Vue 3.0 商业级开源甘特图已经发布到 npm
前端·vue.js·npm·开源·甘特图
前端老曹21 小时前
vue3 三级路由无法缓存的终终终终终终极解决方案
前端·javascript·vue.js
1024小神21 小时前
uniapp + vue3 + scss 定义全局样式变量,并使用
前端·uni-app·scss
顾安r21 小时前
12.17 脚本网页 创意导航
java·linux·前端·游戏·html
Q_Q51100828521 小时前
小程序基于Java Web的健身房管理系统设计和开发
java·前端·小程序
小明记账簿21 小时前
CSS mix-blend-mode 实现元素融合效果
前端·css
_Kayo_21 小时前
React 动态显示icon
前端·react.js·react
free-elcmacom21 小时前
Python实战项目<3>赛制分数分析
开发语言·前端·python·数据分析