React native — рендеринг списка входных данных

Редактировать: Спасибо, ребята, вау, я чувствую себя глупо.

Для компонента 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" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
518
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вместо 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

Другие вопросы по теме