Nuxt3中如何动态设置HtmlAttr的dir与locale属性?
解决Nuxt3中@nuxtjs/i18n切换语言时html的lang/dir属性不动态更新问题
你的问题出在直接将useLocaleHead返回的响应式对象的初始值传给了useHead,没有建立响应式依赖跟踪,所以切换语言时只会保留初始化时的lang和dir值,不会自动更新。
下面是两种可行的修复方案:
方案一:直接复用useLocaleHead的结果
useLocaleHead本身返回的就是符合useHead要求的响应式配置对象,直接传给useHead即可自动跟踪语言变化:
<script setup lang="ts"> const localeHead = useLocaleHead({ addDirAttribute: true, addSeoAttributes: true }); // 直接传入响应式的localeHead,自动更新html属性 useHead(localeHead); </script>
方案二:自定义head内容时用函数式写法
如果需要添加其他自定义的head配置(比如title、meta标签),可以用useHead的函数式写法,这样每次响应式依赖变化时都会重新计算配置:
<script setup lang="ts"> const localeHead = useLocaleHead({ addDirAttribute: true, addSeoAttributes: true }); useHead(() => ({ htmlAttrs: { lang: localeHead.value.htmlAttrs?.lang, dir: localeHead.value.htmlAttrs?.dir }, // 这里可以添加其他自定义配置,比如: // title: '自定义标题' })); </script>
两种方案都能解决切换语言时html标签的lang和dir属性不更新的问题,选适合你需求的即可。
内容的提问来源于stack exchange,提问作者AmirrezaJM
相关产品推荐
相关产品推荐

