Как показать, сколько символов осталось в визуальной форме? - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь показать, сколько символов осталось для ввода в мой полевой рендер, но я получаю _this.setState is not a function. (in '_this.setState({value: value})','_this.setState' is undefined)

А вот мой рендер

const renderField = ({ label, keyboardType, name, meta: { touched, error }, input: { onChange, ...restInput } }) => {
  this.state = {
    value: ''
  }
  return (
    <View style={{ flexDirection: 'column', height: 70, alignItems: 'flex-start' }}>
      <View style={{ flexDirection: 'row', alignItems: 'center', borderColor: 'black', borderBottomWidth: 1, }}>
        <TextInput style={{ height: 37, width: 295, paddingLeft: 10, fontSize: 20, height: 350, justifyContent: "flex-start" }}
          keyboardType={keyboardType} value={this.state.value} onChangeText={(value) => this.setState({ value })} {...restInput}
          placeholder={label} numberOfLines={10} multiline={true} maxLength={100}
        >
        </TextInput>
      </View>
      <Text>
        Characters Left: {this.state.value.length}/100
      </Text>
      {touched && ((error && <Text style={{ color: 'red', }}>{error}</Text>))}
    </View>);
};

1 Ответ

0 голосов
/ 25 мая 2018

Вы определили renderField как functional component, функциональный компонент - stateless по определению.Чтобы использовать state, все, что вам нужно сделать, это изменить на class component.

Вот официальная ссылка для преобразования функционального компонента в компонент класса.

Надеюсь, это поможет!

...