this.state.array.map не является ошибкой функции - PullRequest
0 голосов
/ 13 мая 2019

Я объявил массив объектов в состоянии, которые представляют поля TextInput.Теперь я хочу добавить значение onChangeText моих входных данных, но как только я пытаюсь что-то записать на вход, я получаю ошибку: «this.state.sede_array не является функцией».Я сделал console.log массива, и я вижу, что только первая буква моего ввода добавляется к свойству value, а затем возникает ошибка.Пожалуйста, помогите выяснить, что происходит.

export default class Form extends Component {
  constructor(props) {
    super(props);
    this.state = {
      sede_array:[
        {id:1, value:null},
        {id:2, value:null},
        {id:3, value:null},
      ]

    };
  }

  render() {
    console.log(this.state.sede_array)
    let sede_list= this.state.sede_array.map((val, key) => {
      return(
      <View key={key}>
        <Text style={styles.titolo}>Indirizzo Sede 
        {this.state.sede_array[key].id}</Text>

      <TextInput style={styles.input}
        onChangeText={value => {
          sede_array[key].value = value;
          this.setState({sede_array})
        }}
      />
      </View>
    )});

1 Ответ

0 голосов
/ 13 мая 2019

У меня такое чувство, что ты забиваешь свой массив.Внутри обработчика события onChangeText вы устанавливаете состояние;но знаете ли вы, какова ценность?В качестве префикса вы используете sede_array без (this.state).Я предполагаю, что переменная sede_array не существует глобально, поэтому она будет присваивать значение undefined этому this.state.sede_array при вызове setState ().Поскольку setState запустит другой рендеринг, в этом цикле рендеринга произойдет сбой, потому что this.state.sede_array будет неопределенным.Вы можете исправить это, добавив this.state. перед sede_array внутри onChangeText.

...