Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 2.43 KB

forms.md

File metadata and controls

34 lines (27 loc) · 2.43 KB

Формы

Самое главное - все элементы форм делаются контролируемыми (особенность React).

Компоненты элементов форм не имеют внутреннего состояния. Значение передаётся через props.value и через props.onChange(value) возвращается новое. Внутреннее состояние допустимо там, где без него однозначно сложнее. Если элемент формы имеет внутреннее состояние, то нужно его корректно синхронизировать с props (это дополнительный код и дополнительные циклы рендера).

Цельная форма является повторно используемым компонентом, который интегрируется в контейнере (разделе/модалке) с redux. Чтобы форму использовать как составную часть в более крупной форме (если требуется), необходимо вместо формы реализовывать композицию полей - fields. Т.е. без тега <form> и без кнопок submit.

Типовое поле формы - это набор из заголовка, элементов ввода, подсказок, текста ошибок и прочего. Нужно обратить внимание, что элементы ввода, например Input, Select реализуются отдельным компонентом без заголовка и прочего. Отдельным компонентом может реализовываться вывод ошибки, подсказки.

<div className="FormX">
  <div className="FormX__filed">
    <label>Имя</label>
    <InputText value={data.name} onChnage={this.onChangeField('name')}/>
    <FieldError errors={errors} path="name"/>
    </div>
</div>

Основные свойства элементов ввода - инпуты, селексы, чекбоксы и прочее:

  • value - текущее значение. Тип зависит от особенностей элемента
  • onChange(value) - callback на изменения
  • options - для вариантов выбора