在这个例子中,我有一个更新用户信息的表单,它用React和redux-form 6.5编写。我是这个堆栈的新手。
渲染表单功能如下:
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
<Field name="name" component="input" type="text"/>
<Field name="surname" component="input" type="text"/>
<button action="submit">Sign in</button>
</form>
);
我有reduxForm连接:
const extendedComponent = reduxForm({
form: 'userdetail',
validate
})(UserDetail);
我已经提交了处理程序:
handleFormSubmit(user) {
// TODO: how can I get only the touched fields?
this.props.updateUser(user);
}
我在验证后正确接收了对象用户,我发送了PUT调用,一切正常。
但我不想发送PUT中的所有数据,我希望仅将编辑后的数据发送到PUT 。 我知道我可以检索initialValues并比较所有字段。
还有另外一种方法吗?我怎样才能获得触摸的字段?
这样做的最佳做法是什么?
在我看来,这是一个共同的任务,我没有发现任何相关内容,所以我假设我完全忽视了这一点。
谢谢大家:)
答案 0 :(得分:6)
根据redux-form
项目的维护者:"That's not a feature of the library"。
在该回复中,他建议您自己处理差异或使用预先存在的库,例如object-diff。
例如:
import diff from 'object-diff'
handleFormSubmit(user, dispatch, props) {
const { initialValues } = props
const changedValues = diff(initialValues, user)
this.props.updateUser(changedValues);
}