在nuxt 3应用程序中更改语言后如何动态更改链接标签的link和href属性

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

如何在更改语言时更改页面元数据。

在堆栈溢出

如何在 Nuxt3 中的 HtmlAttr 中动态设置目录和语言环境?

有一种方法可以更改 html 标签的 lang 和 dir 属性。

但是,我需要更改 head 部分中链接标记的 rel 和 href 属性。

当语言发生变化时,这必须动态完成。如果我们沿着本地化路径前进,则本地化值将在 useHead 组合中被替换。但是,如果我们更改语言,之前区域设置的值将保留。

我尝试了以下方法。

创建一个在语言更改时调用的钩子,该钩子又调用 useHead。然而,这不是一个有效的方法。

<script setup lang="ts">
const { t } = useI18n();

useHead({
  // TODO: словить изменение языка и поставить нужны рефланги
  link: [{ rel: t("myLocaleRefValue"), href: t("myLocaleHrefValue") }],
});

const { setLocale } = useI18n();
async function useLocaleHook(locale:string) {
  await setLocale(locale)
  useHead({
    link: [{ rel: t("myLocaleRefValue"), href: t("myLocaleHrefValue") }],
  });
}
</script>

<template>
  <Body>
    <NuxtLayout>
      <NuxtLoadingIndicator />
      <NuxtPage />
    </NuxtLayout>
  </Body>
</template>
internationalization vite i18next nuxt3 vue-i18n
1个回答
0
投票

万岁,我找到了解决方案。

要做到这一点,您需要将其包装在箭头函数中,而不是仅仅传递一个值,然后这些值将被反应性地替换。

useHead({
  link: [{ rel: () => t("myLocaleRelValue"), href: () => t("myLocaleHrefValue"), }],
});

这样,这些值将被反应性地替换。

© www.soinside.com 2019 - 2024. All rights reserved.