В моем приложении я динамически добавляю компоненты, которые в данный момент работают. Эти компоненты имеют поля, и мне нужно иметь возможность обновлять каждое из этих полей для компонентов.
Допустим, я добавил 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 } });
}
Я не могу думать ни о чем другом, что мне нужно добавить, если нужно, дайте мне знать.