Выполнить код перед createStackNavigator () - PullRequest
0 голосов
/ 07 ноября 2019

Дело в том, чтобы изменить язык, функция setlanguage извлекает код языка из asyncstorage и устанавливает этот язык, это выполнение выполняется одновременно с другими инициализациями, такими как createStackNavigator, createDrawerNavigator, поэтому измененные языковые строки не применяются к компонентам навигации, таким как ящик. Как можноЯ выполняю заданный язык перед createStackNavigator? Поэтому языковые строки присутствуют заранее.

Я попытался вручную изменить параметр навигации компонентов в componentDidMount домашнего компонента, но это не сработало.

  const lang = await AsyncStorage.getItem('selectedLangCode');

  if (lang == null) {
    try {
      await AsyncStorage.setItem('selectedLangCode', 'en');
    } catch (e) {
      console.log('not able to store language');
    }
  }
  if (lang) {
    await strings.setLanguage(lang);
  }

И в навигации по App.jsесть код для

  createDrawerNavigator(...components...))

Я импортировал функцию languageSetup до импорта app.js в корневой файл (index.js), но выполнение все равно происходит синхронно, поэтому во время работы languageSetup createDrawerNavigator загружает компоненты в ящик. Так что в ящике языковые переводы не применяются

...