Remix使用optional params做i18n遇到的问题

·

1 min read

我使用Link组件,通过改变路由的params,进行语言切换,遇到了问题:

默认是en,从/account切换到/zh-CN/account是,没有发生任何的变化,loader也没有触发过,怎么回事呢。

Link是client-side路由组件,不会触发父路由的变化。

那这个怎么实现的呢?

remix i18n blog

问题出在我的root组件,上面的逻辑都是没问题的,我是用params做多语言切换的,但是我的root组件却使用了loader,从loader获取到lang,传递给html的lang属性,这样一边是服务端,一边是客户端,就没法同步了。

解决方案:

在root使用useParams获取lang,设置到html的lang属性上就行了。

Update:

这个是行了,但是语言没有变化,还要使用i18n.changeLanguage来和params.lang同步。