Вход не позволяет пусто в реагировать-родном - PullRequest
1 голос
/ 28 мая 2020

У меня есть функция для рендеринга его представления путем сопоставления массива JSON. Список был в порядке, с предварительно инициализированным значением, но когда я хочу изменить значение каждого входа, удалив текущее значение до пустого, он вернет нулевое значение «0» во вход, и я не могу записать в него какое-либо значение. Это мой первый раз, когда я создаю ввод сопоставления.

Я хочу, чтобы он перезаписал данные элемента; поэтому при нажатии кнопки «Сохранить» он будет использовать перезаписанное значение из каждого ввода.

componentDidMount() {
    const { IsModify, ServiceData } = this.state;
    var tempArray = JSON.parse(JSON.stringify(AppGlobal.constObjService));
    this.setState({ ServiceData: this.state.ServiceData.concat(tempArray) });

    var arrayLength = ServiceData.length;
    for (var i = 0; i < arrayLength; i++) {
      if (IsModify === true) {

      } else if (IsModify === false) {
        var newUser = 'PSCount';
        var newValue = '0';
        ServiceData[i][newUser] = newValue;
      }

    }
    console.log('Initialize: ' + JSON.stringify(ServiceData));
}

renderServiceList() {
  return this.state.ServiceData.map((item, index) => {
    return (
      <Row style={{ backgroundColor: index % 2 == 0 ? "#f2f2f2" : "#FFFFFF" }}>
        <Col size={4} style={{ justifyContent: 'center' }}>
          <Text numberOfLines={2}>{item.ServiceName}</Text>
        </Col>
        <Col size={7} style={{ justifyContent: 'center' }}>
          <Item regular style={{}}>
            <Input
                  keyboardType={'number-pad'}
                  placeholder='Enter valid number'
                  ref={(ref) => this.PSCount = ref}
                  value={item.PSCount.toString()}
                  onChangeText={PSCount => { item.PSCount = PSCount.toString() }} />
              </Item></Col>
          </Row>
        )
      })
    }

enter image description here

1 Ответ

0 голосов
/ 28 мая 2020

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

Создать новое событие для изменения текста: -

  onChangeText = (PSCount, index) => {
    this.setState(prevState => {
      prevState.ServiceData[index].PSCount = PSCount
      return {
        ServiceData: prevState.ServiceData
      }
    });
  }

А для моей карты ввода текста: -

  <Input style={{ paddingLeft: 20, paddingRight: 20 }}
    maxLength={3}
    blurOnSubmit={false}
    placeholder='Enter valid number'
    placeholderTextColor='rgba(0, 0, 0, 0.3)'
    keyboardType={'number-pad'}
    ref={(ref) => this.PSCount = ref}
    value={this.state.ServiceData[index].PSCount ?? '0'}
    onChangeText={PSCount => this.onChangeText(PSCount, index)}
  />

Я подумал он будет просто использоваться как в. NET Обработка данных коллекции. Теперь я знаю из этого.

Благодарю тех, кто указывает на изменение состояния для onChangeText. То есть, onChangeText всегда требует обновления.

...