Как условно инициализировать значения в форме с помощью Formik? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую библиотеку Formik в своем проекте React. В моей форме я хочу условные начальные значения. Если это операция вставки, то я хочу установить первое значение раскрывающегося списка в качестве значения по умолчанию, и если это операция обновления, я хочу назначить значения из состояния реакции.

Ниже приведен мой код:

constructor(props) {
    super(props);
    this.state = {
        data:{
          studentId : ''
        }
     }
 };

render() {

   const studentList = this.props.studentList && this.props.studentList;

          <Formik
             initialValues={this.state.data}
             enableReinitialize={true}
             onSubmit={this.formSubmit}
          >
          {({ values, setFieldValue }) => (
            <Field component={Select} name="studentId"
                   options={studentList}
                   value={studentList.filter(option => option.value == values.studentId)}
                   onChange={(opt) => {
                                        setFieldValue("studentId", opt.value);
                                      }}                                            
             />
          )}
          </Formik>

}

Теперь, если это операция вставки, идентификатор студента должен быть установлен в качестве первой записи из списка студентов, и если это операция обновления, studentId уже будет присутствовать в this.state.data; Я взял переменную, которая обозначает тип операции. поэтому мне не нужно беспокоиться о том, чтобы знать текущий тип операции. Я попытался вызвать функцию в initialValues ​​formik, но это не сработало. Я не могу установить состояние внутри рендера, что приведет к непрерывному l oop. Так как я могу добиться этого в formik .?

...