React native expo: TypeError: undefined не является объектом (оценка 'Component.router.getStateForAction') - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать i18next с expo. У меня есть индекс i18n:

import i18n from "i18next"
import { initReactI18next } from "react-i18next"
import locale from "react-native-locale-detector"
import { AsyncStorage } from "react-native"

import fr from './fr.json'
import en from './en.json'

const STORAGE_KEY = '@APP:languageCode'

const languageDetector = {
    init: Function.prototype,
    type: 'languageDetector',
    async: true,
    detect: async (callback) => {
        const savedDataJSON = await AsyncStorage.getItem(STORAGE_KEY)
        const lng = savedDataJSON ? savedDataJSON : null
        const selectedLanguage = lng || locale
        console.log('detected ' + selectedLanguage)
        callback(selectedLanguage)
    }
}

i18n.use(languageDetector).use(initReactI18next).init({
    fallbackLng: 'en',
    resources: [en, fr],
    ns: ['common'],
    defaultNS: 'common',
    debug: true,
    interpolation: {
        escapeValue: false
    }
})

export default i18n

В моем приложении. js:

import Container from "./Navigation/index"
// (container like that)
// const Container = createSwitchNavigator(
//     {
//         MainScreen: MainStack,
//         LoginScreen: LoginStack,
//         SplashScreen: SplashStack
//     },
//     {
//         initialRouteName: 'SplashScreen'
//     }
// )

class WrappedStack extends React.Component {
    render() {
        const t = this.props
        return <Container screenProps={{ t }}/>
    }
}

const ReloadAppOnLanguageChange = withTranslation('common', {
    bindI18N: 'languageChanger',
    bingStore: false
}) (createAppContainer(<WrappedStack />))

export default class App extends React.Component {

    render() {
        const noteAppStore = getStore()
        const noteAppPersistor = getPersistor()

        return (
            <MenuProvider>
                <Provider store={noteAppStore}>
                    <PersistGate persistor={noteAppPersistor}>
                        <PaperProvider theme={theme}>
                            <ReloadAppOnLanguageChange />
                        </PaperProvider>
                    </PersistGate>
                </Provider>
            </MenuProvider>
        )
    }
}

я использую: "i18next": "^ 19.4.4", "i18next -react-native-language-detect ":" ^ 1.0.2 "," react-i18next ":" ^ 11.4.0 "," react-native-locale-Detector ":" ^ 1.0.1 "," react- навигация ":" ^ 4.3.8 "

Когда я запускаю приложение expo, я получаю следующую ошибку: TypeError: undefined is not an object (evaluation 'Component.router.getStateForAction') Я неправильно создал оболочки? Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...