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

Nuxt 3中useFetch与nuxt i18n模块联动问题求助

解决Nuxt3中useFetch与nuxt i18n切换locale时布局组件数据不更新的问题
  • 给useFetch添加包含locale的唯一key
    布局组件(如navbar、footer)中的useFetch默认只会在组件初始化时执行一次,切换locale时不会自动重新请求。你需要将当前locale作为useFetch的key的一部分,让Nuxt感知到依赖变化并重新发起请求。

    示例代码(Navbar组件):

    <script setup>
    const { locale } = useI18n()
    const { data: categories } = useFetch('/api/categories', {
      key: ['navbar-categories', locale.value], // 将locale纳入请求key
      params: {
        lang: locale.value // 传递locale作为后端接口参数
      }
    })
    </script>
    
  • 监听locale变化手动触发重新请求
    如果不想依赖key的变化,也可以通过watch监听locale的改变,手动调用useFetch返回的refetch方法。

    示例代码(Footer组件):

    <script setup>
    const { locale } = useI18n()
    const { data: footerData, refetch } = useFetch('/api/footer', {
      params: {
        lang: locale.value
      }
    })
    
    // 监听locale切换事件,触发重新请求
    watch(locale, () => {
      refetch()
    }, { immediate: false })
    </script>
    
  • 注意事项

    • 确保后端接口支持接收lang或对应参数,返回匹配当前语言的数据。
    • 若使用useAsyncData替代useFetch,逻辑完全一致,只需将locale加入依赖key或监听变化触发重新执行。

内容的提问来源于stack exchange,提问作者agamyrat_akmyradov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:44:49