Реагировать на собственный ввод, не позволяющий редактировать значение - PullRequest
0 голосов
/ 09 июля 2019

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

render() {
    const {
      FirstName, LastName, Email, Phone, Unit, MiddleName
    } = this.state.MyData;
    ...
    <Input
        value={LastName}
        onChangeText={val => this.setState({ LastName: val })}
        style={styles.valueText}
   />
   ...

Имеет значение «Смит». Когда я нажимаю на Ввод, он не позволяет мне удалять или добавлять символы.

Спасибо

Ответы [ 2 ]

1 голос
/ 10 июля 2019

теперь вы можете использовать код

import React, { Component } from 'react';
import { AppRegistry, TextInput } from 'react-native';

export default class UselessTextInput extends Component {
  constructor(props) {
    super(props);
    this.state = { text: 'Useless Placeholder' };
  }

  render() {
    return (
      <TextInput
        style={{height: 40, borderColor: 'gray', borderWidth: 1}}
        onChangeText={(text) => this.setState({text})}
        value={this.state.text}
      />
    );
  }
}
1 голос
/ 09 июля 2019

Вы не обновляете объект, но добавляете новое значение в состояние, после ввода значения в поле ввода ваше состояние становится.

state = {
 MyData: {...},
 LastName: ...
}

Вместо этого обновите объект

onChangeText = (text, input) => {
  const obj = { ...this.state.MyData };

  obj[input] = text;

  this.setState({
    MyData: obj
  })
};


<Input
  value={LastName}
  onChangeText={(text) => this.onChangeText(text, 'LastName')}
  style={styles.valueText}
/>
...