Форма Formik сбрасывается до начальных значений после вызова API

#javascript #reactjs #material-ui #formik #formik-material-ui

Вопрос:

У меня есть поле автозаполнения MaterialUI с некоторыми вызовами из API. Рядом с этим полем у меня есть кнопка, которая вызывает API для обновления параметров (для загрузки новых, если некоторые из них были созданы). Но каким-то образом все остальные поля сбрасываются до начальных значений. Я знаю это, потому что, когда я делаю это, редактируя существующий экземпляр, а не создавая новый, поля остаются такими, какими они пришли с сервера. Кроме того, я протестировал вызов API без обновления состояния параметров. Даже после простого ожидания значения формы вызова axios очищаются.

Вот ввод автозаполнения:

 <FastField
    name="club"
    options={clubs}
    optionsLoading={clubsLoading}
    shouldUpdate={(next, prev) =>
        shouldFastFieldRerender(next, prev, getIn)
    }
>
    {() => (
        <FormField.AutoComplete
            label="Клуб"
            name="club"
            value={values.club}
            setFieldValue={setFieldValue}
            setTouched={setFieldTouched}
            touched={touched.club}
            errors={errors.club}
            options={clubs}
            disabled={clubsLoading}
            selectionDisabled={clubsLoading}
        />
    )}
</FastField>
 

И вот кнопка рядом с ним:

 <IconButton
    type="button"
    className={classNames(
        classes.btn,
        classes.reloadButton
    )}
    onClick={fetchClubs}
>
    <ReplayIcon />
</IconButton>
 

Функция выборки:

 const fetchClubs = React.useCallback(async () => {
    const clubs = await getClubs();

    setClubs(clubs);
}, [getClubs]);
 

Поэтому , даже если я прокомментирую функцию setClubs и сделаю только await getClubs() это, форма все равно будет сброшена

Комментарии:

1. где вы используете функцию «fetchClubs»? пожалуйста, добавьте соответствующие коды