Я хотел бы заполнить форму после вызова ajax с помощью redux.
Мой случай довольно прост:
- У меня есть простая форма пользователя (пока только с одним текстовым полем), это представление реакции, привязанное к состоянию с помощью
connect()
. - Я вызываю API отдыха, чтобы вызвать пользователя.
- Когда вызов api выполнен, действие отправляется с пользователем.
- Редуктор обновляет состояние хранилища вместе с пользователем.
- Я хочу заполнить / обновить форму полученными значениями.
Решение 1.
Если я установлю значение из реквизита следующим образом:
const Field = ({ field, onFieldChange, value }) => (
<input
value={value}
onChange={(event) => { onFieldChange(field, event.target.value) }}
type="text"
/>
)
Это работает, но я получаю это предупреждение:
Field is changing an uncontrolled input of type text to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa).
Я понимаю, почему я получаю эту ошибку, поскольку я не должен использовать компонент для отображения чего-либо, а также иметь возможность обновлять его.
Я также пытался использовать свойства defaultValue, но они используются только при создании компонента (а пользователя у нас еще нет). После возврата вызова ajax нельзя вызвать defaultValue.
Решение 2:
Используйте redux-form с настраиваемым плагином для обновления модели формы каждый раз при обновлении состояния. Я не считаю это решение действительно чистым, но, возможно, я ошибаюсь.
Я действительно считаю, что иду в неправильном направлении и что путь должен существовать лучше.
Кто-нибудь уже сталкивался с подобной проблемой?