由于我是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文件中。
感谢您的帮助。
答案 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',
},
});
让我知道是否可行。