【发布时间】:2020-05-12 19:58:41
【问题描述】:
案例是更改语言,函数setlanguage从asyncstorage检索语言代码并设置该语言,此执行与createStackNavigator,createDrawerNavigator等其他初始化同时运行,因此更改的语言字符串不适用于抽屉等导航组件,如何我在 createStackNavigator 之前执行设置的语言?所以语言字符串是预先存在的。
我已经尝试在 home 组件的 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...))
我在 app.js 导入根文件(index.js)之前导入了 languageSetup 函数 执行仍然是同步的,因此在 languageSetup 运行时 createDrawerNavigator 将组件加载到抽屉中。 所以在抽屉里,语言翻译不适用
【问题讨论】:
标签: react-native react-native-android