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

React结合i18n按语言切换组件时match属性不存在报错如何解决

错误原因

useTranslation() 是react-i18next提供的Hook,其返回值本身没有内置match方法,你调用的这个API不属于官方提供的能力,因此会抛出类型不存在的报错。同时你之前的写法没有正确解构出i18n实例,直接将Hook返回的包含t函数和i18n实例的对象赋值给了i18n变量,也是错误写法。

修复方案

直接读取i18n实例的language属性拿到当前语言,自行实现匹配逻辑即可,完全适配你不想用翻译Key、要独立维护不同语言组件的需求:

export const Preparation = () => {
  // 正确解构出i18n实例
  const { i18n } = useTranslation()
  // 取当前语言,若你的语言带地区后缀如de-DE,可加.slice(0,2)只取前两位编码
  const currentLocale = i18n.language
  // 实现匹配逻辑,匹配到目标语言返回对应编码,否则走英文兜底
  const targetLocale = ["de", "fr", "it"].includes(currentLocale) ? currentLocale : "en"

  switch (targetLocale) {
    case "de":
      return <PreparationGerman />
    case "fr":
      return <PreparationFrench />
    case "it":
      return <PreparationItalian />
    default:
      return <PreparationEnglish />
  }
}

const PreparationGerman = () => (
    <h1>German</h1>
)

const PreparationFrench = () => (
    <h1>French</h1>
)

const PreparationItalian = () => (
    <h1>Italian</h1>
)

const PreparationEnglish = () => (
    <h1>English</h1>
)

上述写法不会影响你在各个语言独立组件内做任意文本格式化、结构调整的操作,灵活性比统一用翻译Key的方案更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:06:05