Я создаю приложение, в котором пользователям предлагается выбрать свой язык при первом запуске приложения. Затем язык сохраняется локально с помощью AsyncStorage.
Каждый раз, когда приложение запускается, язык извлекается из хранилища и сохраняется в переменной global.lang
для использования всеми компонентами:
AsyncStorage.getItem('settings', (err, item) => {
global.lang = item.lang;
});
Когда я использую переменную global.lang
в методе render()
в любом компоненте, все кажется нормальным. Однако у меня возникают проблемы при попытке использовать ту же переменную при инициализации моих навигаторов:
const TabNavigator = createBottomTabNavigator(
{
Home: {
screen: HomeScreenNavigator,
navigationOptions:{
title: strings['en'].linkHome, --> this works
}
},
News: {
screen: NewsScreen,
navigationOptions:{
title: strings[global.lang].linkNews, --> this fails
}
}
});
Я полагаю, что это потому, что значение не извлекается из AsyncStorage к моменту создания навигаторов. Если я установлю global.lang
вручную (например, global.lang = 'en';
), то все будет в порядке, но не тогда, когда я пытаюсь извлечь его из хранилища.
Есть что-то, чего мне не хватает? Могу ли я инициализировать навигатор с языком по умолчанию и изменить название позже на основе полученного значения?
Любая помощь будет принята с благодарностью.