React Native:导入'localized-strings'对象时未定义不是对象

时间:2019-02-19 15:59:02

标签: reactjs react-native npm

由于我是React Native和JS的新手,所以我一直坚持从另一个文件导入函数,但我不知道如何传递它。我正在使用this网站上的库“ localized-strings”。在我的代码中,我基于此lib创建对象:

import LocalizedStrings from 'localized-strings';

export default SharedStrings;
let SharedStrings = new LocalizedStrings({
    en: {
        back: 'Back',
        next: 'Next',
        skip: 'Skip',
    },
    fi: {
        back: 'Takaisin',
        next: 'Seuraava',
        skip: 'Hyppiä',
    },
    sw: {
        back: 'Tillbaka',
        next: 'Nästa',
        skip: 'Hoppa',
    },
    de: {
        back: 'Zurück',
        next: 'Nächster',
        skip: 'Überspringen',
    },
})

在另一个.js文件中,我将其导入并将这些值之一传递给<Text>对象。下面的代码:

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

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

在设备上使用Expo CLI运行它后,出现以下错误:     TypeError: undefined is not an object (evaluating '_SharedStrings.default.next')

有趣的是,当我将SharedStrings对象复制粘贴到呈现SharedStrings.next字符串的代码中时,它可以正常工作。我不喜欢这种解决方案,并希望将这些翻译保存在单独的.js文件中。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

所以问题可能出在声明之前,您正在使用SharedStrings。 尝试在定义后添加导出语句。 对于前

import LocalizedStrings from 'localized-strings';

let SharedStrings = new LocalizedStrings({
    en: {
        back: 'Back',
        next: 'Next',
        skip: 'Skip',
    },
    fi: {
        back: 'Takaisin',
        next: 'Seuraava',
        skip: 'Hyppiä',
    },
    sw: {
        back: 'Tillbaka',
        next: 'Nästa',
        skip: 'Hoppa',
    },
    de: {
        back: 'Zurück',
        next: 'Nächster',
        skip: 'Überspringen',
    },
});
export default SharedStrings;

或者您可以


import LocalizedStrings from 'localized-strings';

export default new LocalizedStrings({
    en: {
        back: 'Back',
        next: 'Next',
        skip: 'Skip',
    },
    fi: {
        back: 'Takaisin',
        next: 'Seuraava',
        skip: 'Hyppiä',
    },
    sw: {
        back: 'Tillbaka',
        next: 'Nästa',
        skip: 'Hoppa',
    },
    de: {
        back: 'Zurück',
        next: 'Nächster',
        skip: 'Überspringen',
    },
});

让我知道是否可行。