如何在i18next配置中使用cookie?

时间:2019-09-08 18:17:46

标签: reactjs internationalization i18next react-i18next

我想在我的i18n.js文件中使用react-cookie来设置语言。

我正在尝试这样,但它发送此错误: 无效的挂接调用。挂钩只能在功能组件的主体内部调用。可能由于以下原因之一而发生: 1.您的React和渲染器版本可能不匹配(例如React DOM) 2.您可能违反了《钩子规则》 3.您可能在同一应用中拥有多个React副本

import LanguageDetector from 'i18next-browser-languagedetector';
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import * as en from './locales/en.json'
import * as pl from './locales/pl.json'
import { useCookies } from 'react-cookie'

const { cookies } = useCookies(['i18n_locale'])

const resources = {
  en: {
    translation: en.default
  },
  "pl-PL": {
    translation: pl.default
  }
}

i18n
  .use(initReactI18next)
  .use(LanguageDetector)
  .init({
    resources,
    lng: cookies.i18n_locale ? cookies.i18n_locale : window.navigator.language,
    keySeparator: false,
    interpolation: {
      escapeValue: false
    }
  })

export default useCookies(i18n)

我希望它能正常工作!

1 个答案:

答案 0 :(得分:0)

反应挂钩具有与其使用相关的某些规则(see this page)。错误消息中提到了其中之一:

  

只能在函数组件的主体内部调用钩子。

关于cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&\n/" -e "s/\S\{64\}/&\n/g"的用法:首先,将根元素包装在提供程序组件中。这将允许在任何基于函数的组件中沿树调用react-cookie。从lib的文档中查看this example