Я следую этот документ для реализации метода языкового перевода в моем приложении.
Существует раскрывающийся список для выбора языка, и я попытался утешить значение
получение из выпадающего списка, а затем передача его в функцию onChangeText. я
используя два набора языков, таких как английский и арабский, но при переключении
язык с английского на арабский язык не меняется на арабский. Ниже приведен
часть кода для локализации.Пожалуйста, помогите мне разобраться в ошибке.Спасибо!
stringsoflanguages.js
const strings = new LocalizedStrings({
"English": {
phone_number: "Phone Number",
register: "REGISTER/LOGIN",
plumber: "Plumber",
},
"Arabic": {
phone_number: "رقم الهاتف",
register: "التسجيل/الدخول",
plumber: "سباك",
}
export default strings;
регистрация.js
import stringsoflanguages from './stringsoflanguages';
const lang = [
{ value: 'English' },
{ value: 'Arabic' },
];
language = lang;
onChangeText(text) {
console.info(text);
stringsoflanguages.setLanguage(text);
}
....
.....
<Dropdown
label = "Choose Language"
data = {language}
textColor = "#fff"
selectedItemColor = "#000"
onChangeText = {this.onChangeText}
/>
<Input
label = "Phone Number"
placeholder = {stringsoflanguages.phone_number} />
<Button onPress = {() => this.onPressRegister()}>
<Text>{stringsoflanguages.register</Text>
</Button>
Я пробовал это, но получаю ошибку this.setState undefined
Ну, вы должны правильно связать функцию. Самый простой способ — заменить onChangeText(text) { на onChangeText = (text) => {, если ваша среда поддерживает это. (Однако это общеизвестное знание React и не имеет ничего общего с вопросом.)
Да, работает! Большое спасибо за помощь :)
Также я сомневаюсь, как передать это значение на следующие страницы. Мне нужно передать this.state.text или просто text?
Если у вас есть компонент-контейнер для ваших страниц, то выбранный язык должен находиться в состоянии этого контейнера, чтобы вы могли передавать его на все страницы. Это означает, что выбор должен отправить его вверх, а ваш контейнер должен передать его вниз. Как это сделать, объясняется во всей документации по реакции, переполнению стека и в Интернете в целом.
Да, я проверю. Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


документы говорит, что вам нужно вызвать
this.setState({});после установки языка, скорее всего, для принудительного повторного рендеринга.