【发布时间】:2021-04-22 03:59:03
【问题描述】:
我正在开发一个 react-native 应用程序,我想要多语言支持。我还写了 languageHelper 以便于管理。
languageHelper.js
import AsyncStorage from '@react-native-async-storage/async-storage';
export const Translator = async (key) => {
try {
const langCode = await AsyncStorage.getItem('@lang_code')
return I18n.t(key, { locale: langCode ?? 'en' })
} catch (e) {
return I18n.t(key)
}
}
login.js
render() {
return (
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
<KeyboardAvoidingView behavior={'height'} style={styles.container}>
<ScrollView>
<ImageBackground source={require('../Sources/LoginBg.jpg')} style={styles.backgroundImage}>
<Layout style={styles.header}>
<Text category='h1' status='primary'> {Translator('Login_hello')}</Text>
<Text category='h6' status='primary'> {Translator('Login_signInMessage')}</Text>
</Layout>
我遇到的错误
Error: Objects are not valid as a React child (found: object with keys {_U, _V, _W, _X}). If you meant to render a collection of children, use an array instead.
但是由于 Translator 是一个异步函数,所以我不能在渲染中使用。 (我尝试异步渲染)。
我该如何解决这个问题?感谢您的帮助。
【问题讨论】:
-
在
componentWillMount请求翻译并将结果保存在状态中,然后渲染这些状态变量。
标签: reactjs react-native async-await