Я использую Formik в своем приложении для реагирования. Я инициализировал все значения формы из состояния. Но я хотел обновить указанное поле формы c, если изменились реквизиты в магазине приставок. Ниже моя форма formik:
<Formik
initialValues={this.state.branchData}
enableReinitialize={true}
onSubmit={this.formSubmit} >
{({ values, setFieldValue }) => (
<Form >
<Row>
<Col lg="12">
<FormGroup className="col-6">
<Input type="select" value={values.StateId} name="StateId" onChange={this.handleChange(setFieldValue)}>
<option value='' >Select State</option>
{this.props.stateList && this.props.stateList.map((item, i) => (
<option key={i} value={item.StateId}>
{item.StateName}
</option>
))}
</Input>
{this.validator.message('state', values.StateId, 'required')}
<Label className="impo_label">Select State</Label>
</FormGroup>
<FormGroup className="col-6">
<Field className="form-control" name="GstNo" type="text" maxLength="15" />
<Label className="impo_label">GST No</Label>
{this.validator.message('gst no', values.GstNo, 'required|min:15|max:15')}
</FormGroup>
</Col>
</Row>
</Form>
)}
Теперь, когда я меняю состояние из выпадающего списка, API получит вызов, который вернет GST нет по идентификатору состояния. Я хочу обновить поле gst no значением, полученным из API в подпорках. Если gst no получил значение null, то я хочу, чтобы пользователь ввел gst no, но если gst no получен из API, я хочу обновить поле gst no в форме значением, полученным в props, и отключить ввод формы. Я не могу обновить gstno в this.state.branchData, так как это сбросит значения формы со значениями в this.state.branchData.
Кто-нибудь знает, как этого добиться в formik?