В React и React Native принято включать поля формы <input>
, включая обработчик onChange
, который обновляет state
при каждом нажатии клавиши.Например:
<input type="text" value={this.state.valueField1} onChange={this.handleChangeField1} />
Состояние обновляется, чтобы предотвратить восстановление значения до исходного значения, пока пользователь печатает.
Это приводит к многократному повторению кода, таким образомнарушая старый принцип СУХОЙ (не повторяй себя).Например (на основе React Docs ):
handleChangeField1(event) {
this.setState({valueField1: event.target.value});
}
handleChangeField2(event) {
this.setState({valueField2: event.target.value});
}
Проблема здесь в том, что нужно повторить имя поля «Field1» 3 раза вместо одного (только для объявления) и принудительносоздание логики onChange, которая может легко (и по ошибке) изменить стандартное ожидаемое поведение компонентов пользовательского интерфейса для пользователей APP.
Вопрос: Есть ли менее подробный,менее повторяющийся и менее рискованный способ включения <input>
полей в приложения ReactJS / React-Native?
Когда я говорю о сохранении собственного поведения компонента, я в основном думаю о том, чтобы не изменять значение, покапользователь печатает.
В качестве ссылки, в простом примере HTML / VanillaJS мы просто добавим <input value="{ServerSideValue}" name="field1">
один раз, а затем получим значение из field1, где бы оно нам ни понадобилось, таким образом, сохраняя поведение собственного компонента и не повторяяfield1 более одного раза в объявлении.