React Native: Undefined не является объектом при импорте объекта 'localized-strings' - PullRequest
0 голосов
/ 19 февраля 2019

Поскольку я новичок в React Native и JS, я застрял при импорте функции из другого файла и не знаю, как ее передать.Я использую библиотеку localized-strings с этого веб-сайта.Вот мой код, в котором я делаю объект на основе этой библиотеки:

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 голосов
/ 19 февраля 2019

Так что, вероятно, проблема в том, что вы используете SharedStrings до того, как она будет объявлена.Попробуйте добавить оператор экспорта после определения.Для ex

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',
    },
});

Дайте мне знать, если это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...