Как обновить поле формы Speci c в formik при изменении значения в хранилище приставок? - PullRequest
1 голос
/ 24 февраля 2020

Я использую 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?

1 Ответ

1 голос
/ 01 марта 2020

Когда данные поступают из api. Вы можете просто изменить значение поля следующим образом:

setFieldValue('GstNo', valueFromApi)

...