You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

useHead仅在页面挂载时更新标题,activated钩子触发时不更新的问题求助

解决useHead在页面重新激活时不更新标题的问题

你的问题出在useHead默认仅在组件首次挂载时执行一次配置逻辑,而使用keep-alive包裹的页面触发activated钩子时,不会重新触发useHead的初始化,导致标题无法更新。下面是两种可行的解决方法:

方法一:结合onActivated手动调用更新逻辑

把标题更新逻辑封装成函数,在首次挂载和activated钩子中都执行:

<script setup>
import { useHead } from '@vueuse/head' // Nuxt项目可直接使用内置的useHead
import { onActivated } from 'vue'

const setPageTitle = () => {
  useHead({ title: "Join Us" })
}

// 首次挂载时设置标题
setPageTitle()

// 页面重新激活时重新设置标题
onActivated(() => {
  setPageTitle()
})
</script>

方法二:使用响应式变量触发自动更新

将标题设为响应式变量,让useHead监听其变化,在activated钩子中更新变量值(即使值相同也会触发响应):

<script setup>
import { useHead } from '@vueuse/head'
import { ref, onActivated } from 'vue'

const pageTitle = ref("Join Us")

// 传入函数让useHead监听响应式变量
useHead({
  title: () => pageTitle.value
})

onActivated(() => {
  // 更新变量触发标题更新
  pageTitle.value = "Join Us"
})
</script>

这两种方法都能确保页面每次被激活时,标题都会重新更新为目标值。

内容的提问来源于stack exchange,提问作者Muhammad Binyameen Malik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:13:20