Мне нужно сделать отправку и изменить данные формы после загрузки страницы:
dispatch(change("project", field, value));
однако это изменит «первоначальный» на ложный и «грязный» на истинный, у кого-нибудь есть хорошее решение для такого случая?
Мне нужно сделать отправку и изменить данные формы после загрузки страницы:
dispatch(change("project", field, value));
однако это изменит «первоначальный» на ложный и «грязный» на истинный, у кого-нибудь есть хорошее решение для такого случая?
Для этого вы можете предоставить initialValues
украшенному компоненту reduxForm:
compose(
connect((state) => ({
initialValues: state.someData
})),
reduxForm({
form: 'someForm'
})
)(Component)
Или, как вариант, вы можете использовать initialize
создатель действий из redux-form
после того, как данные будут загружены с сервера:
dispatch(initialize('myForm', newInitialValues));
Отправка действия initialize
установит состояние вашей формы в pristine
initialize
с новыми значениями, не отправляя действие change
?
- person 1ven; 16.10.2017
Я не знаю, правильный ли это способ, но он работает для меня.
this.props.dispatch({type: '@@redux-form/BLUR', payload: yourPayload, meta: {form: "formName", field: "formField", touch: true}});
Я отправляю приведенный выше код в событие onChange моего поля, заставляя избыточную форму обновлять первоначальный статус.
Вы можете установить для флага молчания значение true, это не будет обновлять нетронутые и грязные флаги. Пример: actions.change(model, value, { silent: true })
Вы также можете использовать actions.load()
. Разница между load()
и change()
Это отличается от вызова action.change(model, value, {silent: true}). Оба похожи с одним основным отличием: action.load также обновляет .loadedValue, а неактивное изменение — нет.
https://davidkpiano.github.io/react-redux-form/docs/api/actions.html#actions-load