React Native-基于开关案例循环导出对象

时间:2019-02-20 09:13:34

标签: javascript reactjs react-native

我是React Native的新手,我正为对象导出问题而苦苦挣扎。在我的应用中,我从存储在变量Settings.translationType中的后端简单字符串中接收。收到后,我正在渲染一个简单的视图,就像这样:

import React, { Component } from 'react';
import { Text, View } from 'react-native';
import Translations from '../constants/Translations';

export default class HomeScreen extends Component {
    render() {
        return(
            <View>
                <Text>{Translations.one}</Text>
            </View>
        )
    }
}

这会带来一些麻烦。我有一个.js文件(Translations),它取决于来自后端服务的内容,它提供正确的翻译类别名称。看起来像这样:

import Category1 from './translations/Category1';
import Category2 from './translations/Category2';
import Category3 from './translations/Category3';

const Translations = () => {
    switch (Settings.translationType) {
        case '2': 
            return Category2;
        case '3': 
            return Category3;
        default:
            return Category1;
    }
}

export default Translations();

./translations文件夹中,我有三个.js文件,如下所示:

import LocalizedStrings from 'localized-strings';

const Category1 = new LocalizedStrings({
    en: {
        one: 'Restaurant',
        two: 'Café',
        three: 'Pub'
    },
    fi: {
        one: 'Ravintola',
        two: 'Kahvila',
        three: 'Pub'
    },
    sw: {
        one: 'Restaurang',
        two: 'Kafé',
        three: 'Pub'
    },
    de: {
        one: 'Restaurant',
        two: 'Cafe',
        three: 'Pub'
    },
})

export default Category1;

在Expo CLI中运行我的应用程序后,总是从BE正确获取Settings.translationType,但出现类似Unable to resolve module './translations/Category1.js' from '~/RN/MyProject/src/constants/Translations.js': The module './translations/Category1.js' could not be found from '~RN/MyProject/src/constants/Translations.js'. Indeed, non of these files exists: (and there are listed the files with other extensions of Category1 file, located at ~/RN/MyProject/src/constants/translations/)

的错误

我认为我遇到了一些逻辑问题(语法看起来不错),因此,如果我缺少某些内容或有其他解决方案,请多多指教!

编辑: 添加了我的文件夹结构。

Folder structure

2 个答案:

答案 0 :(得分:0)

好的,我想我发现了您的问题。在Translations.js中,您的导出语句应为

export default Translations;

代替

export default Translations();

还要确保所有类别文件都以相同的方式导出。 看看是否可行。

答案 1 :(得分:0)

我发现在源文件中我拼错了文件的路径,语法错误最严重。更改之后,所有工作正常。就您所知Atin Singhexport default Translations(不带花括号)会传递''而不是正确的翻译字符串。谢谢大家的帮助!