Обновление значений массива по индексу для динамически добавляемых компонентов - PullRequest
0 голосов
/ 19 марта 2020

В моем приложении я динамически добавляю компоненты, которые в данный момент работают. Эти компоненты имеют поля, и мне нужно иметь возможность обновлять каждое из этих полей для компонентов.

Допустим, я добавил 3 компонента, и у каждого компонента есть текстовое поле с начальным значением. Теперь, если я введу текст в поле любого из компонентов, последний добавленный получит значение, которое я только что ввел, а значение для других полей go будет пустым.

Поэтому, когда я добавляю компонент, появляется массив, в котором хранится индекс каждого добавленного компонента, поэтому в сценарии, который я только что описал, массив будет:

arr: [0, 1, 2]

Переменная в состоянии содержит начальное значение индекса, и оно увеличивается каждый раз при добавлении нового компонента.

Создается другой массив, который добавляет к нему компоненты, и они сопоставляются с индексом. У меня есть окончательный массив, который используется для хранения значения поля для компонентов.

Я добавляю новые значения в этот массив следующим образом:

this.setState({ vals: [ ...this.state.vals, "some value" ] });

Компоненты добавляются в их массив как следующим образом:

let newArr = this.state.arr.map(( item, key ) =>
        {
            if(( key ) == this.index)
            {
                return(
....

Эта часть работает нормально.

При изменении поля вызывается следующий метод:

onChangeText={(newVal) => this.changeField(newVal, item.index)}

И метод changeField имеет вид:

changeField(val, ind) {
      this.setState({ fieldArr: { [ind]: val } });
    }

Я не могу думать ни о чем другом, что мне нужно добавить, если нужно, дайте мне знать.

...