Редактировать: Спасибо, ребята, вау, я чувствую себя глупо.
Для компонента React-Native я пытаюсь отобразить список полей ввода. Например, приведенный ниже код должен отображать три поля ввода. Я просто хочу, чтобы когда я набираю букву «А» в первое поле, на экране отображалось, что «А» было введено, как в обычном поле ввода onChangeText().
Однако мне трудно заставить это работать - я не думаю, что какое-либо мое состояние на самом деле сохраняется. Когда я набираю «А» в поле, на экране ничего не появляется.
Простите меня, если я упустил что-то очевидное, я новичок в React и React-Native в целом. Я довольно тщательно искал ранее отвеченный вопрос - я видел что-то о React, но он отображал HTML, поэтому я не уверен, применимо ли это. Спасибо!
import React from 'react';
import { View } from 'react-native';
import { Input } from 'react-native-elements';
class ExampleComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
texts: ['', '', ''],
};
}
renderInputs() {
return this.state.texts.map((text, i) => {
return <Input
style = {styles.input}
onChangeText = {(text) => this.rerenderOnChange(text, i)}
value = {this.state.texts[i]}
placeholder='Email'
placeholderTextColor='white'
autoCapitalize='none'
inputStyle = {styles.inputStyle}
/>
});
}
rerenderOnChange(text, index) {
texts = []
for (var i = 0; i < this.state.texts.length; i++) {
if (i == index) {
texts.push(text);
} else {
texts.push(this.state.texts[i]);
}
}
this.state.texts = texts;
}
render() {
return (
<View style = {styles.view}>
{ this.renderInputs() }
</View>
);
}
}





Вместо this.state.texts = texts;
используйте this.setState({texts : texts}) в своем rerenderOnChange() методе
Пожалуйста, обрати внимание : Никогда не изменяйте this.state напрямую, так как последующий вызов setState() может заменить сделанную вами мутацию. Относитесь к this.state как к неизменному.
Я сделал несколько простых изменений, и это работает
Нравится -
this.state.texts = texts;
к
this.setState({ texts });
и
texts = []
к
const texts = []
или
let texts = []
Пожалуйста, найдите рабочий пример ниже - https://snack.expo.io/H18lWDM84