Я использую библиотеку 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 .?