vue中使用key属性控制组件刷新失败

问题描述 投票:0回答:1

我需要点击一个按钮,通过绑定函数修改组件的键值,发现键值改变了,但是组件并没有卸载重新渲染。

网上查了很多资料,发现都是这么实现页面刷新的,这个问题困扰了很久。

希望有好心人指导我如何正确使用key属性来完成页面刷新

在此输入图片描述

<template>
  <!-- 路由组件出口 -->
  <!-- v-slot可以获取当前渲染的组件以及路由信息 -->
  <router-view v-slot="{ Component }">
    <transition name="fade">
      <!-- 渲染home一级路由的子路由 -->
      <component :is="Component" :key="refreshContent"/>
    </transition>
  </router-view>
</template>

<script setup lang="ts">
import emitter from "@/utils/emitter";
import { onUnmounted, onMounted } from "vue";


let refreshContent = 0

emitter.on('refresh_content', () => {
  refreshContent += 1
  console.log(refreshContent)
})

onMounted(() => {
  console.log('load')
})

onUnmounted(() => {
  emitter.off('refresh_content')
  console.log('unload')
})

</script>

<style scoped>
.fade-enter-from {
  opacity: 0;
  transform: scale(0)
}

.fade-enter-to {
  opacity: 1;
  transform: scale(1);
}

.fade-enter-active {
  transform: all 0.5s;
}
</style>```

我需要点击一个按钮,通过绑定函数修改组件的键值,发现键值改变了,但是组件并没有卸载重新渲染。

网上查了很多资料,发现都是这么实现页面刷新的,这个问题困扰了很久。

希望有好心人指导我如何正确使用key属性来完成页面刷新

javascript vue.js vuejs3 vue-component
1个回答
0
投票

需要设置refreshContent为响应式数据,如

refreshContent = ref(0); refreshContent.value += 1

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.