前提・実現したいこと
react-native-localizeの使い raect native 言語選択したいです。
ですが、exampleはクラスで書いてるのを関数でかきたいのですがライフサイクルでfunctionを呼ぶことに失敗しています、、、、、、、、、、誰か教えて下さい(mm_)
発生している問題・エラーメッセージ
下記のsetI18nConfig()が動かないです。。
該当のソースコード
const setI18nConfig = () => { // fallback if no available language fits const fallback = {languageTag: 'en', isRTL: false}; console.log('hello'); const {languageTag, isRTL} = RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) || fallback; // set i18n-js config i18n.translations = {[languageTag]: translationGetters[languageTag]()}; i18n.locale = languageTag; }; React.useEffect(() => { RNLocalize.addEventListener('change', setI18nConfig); return () => { RNLocalize.removeEventListener('change', setI18nConfig); console.log('haaaa'); }; });
試したこと
exampleは下記のように動かしています。
公式はクラスで書いているので、私は関数で書いているところが違います。
const setI18nConfig = () => { // fallback if no available language fits const fallback = {languageTag: 'en', isRTL: false}; console.log('hello'); const {languageTag, isRTL} = RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) || fallback; // clear translation cache translate.cache.clear(); // update layout direction I18nManager.forceRTL(isRTL); // set i18n-js config i18n.translations = {[languageTag]: translationGetters[languageTag]()}; i18n
constructor(props) { super(props); setI18nConfig(); // set initial config } componentDidMount() { RNLocalize.addEventListener('change', this.handleLocalizationChange); } componentWillUnmount() { RNLocalize.removeEventListener('change', this.handleLocalizationChange); } handleLocalizationChange = () => { setI18nConfig(); this.forceUpdate(); };
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー