在我当前的应用程序中,我看到anyTouched属性已经存在于我的Web应用程序中的所有Redux表单的redux存储中。
我想将所有dirty道具存储在redux存储中,以便可以在Web应用程序的其他部分(如导航栏)中访问它。
我尝试过isDirty选择器。它显示空值。根据选择器的文档-选择器可以在应用程序的任何部分中用于查询任何表单的状态。可悲的是,它对我不起作用。
在当前代码中,我找不到anyTouched最初是如何存储在redux存储中的:-(。
我的问题是我该怎么做才能在redux store中存储脏道具?
答案 0 :(得分:0)
如果您只想从redux-form
中获取脏值,而不是isDirty
,则还可以使用loadash
这个JavaScript代码,在提交表单时我用它来获取唯一脏值
import _ from 'lodash';
render() {
const { intl } = this.props;
return (
<div>
<UserForm
initialValues={this.initializeData()}
intl={intl}
onSubmit={immutableValues => {
const data = immutableValues.toJS();
this.getDirtyData(data);
}}
/>
</div>
);
}
}
initializeData() {
... Whatever your initialize data
}
getDirtyData(immutableData) {
// Dirty data
const updatedObj = this.changes(immutableData, this.state.myInitialState);
//Here you will get your dirty data in updatedObj.
}
changes(object, base) {
return _.transform(object, (result, value, key) => {
if (!_.isEqual(value, base[key])) {
result[key] =
_.isObject(value) && _.isObject(base[key])
? changes(value, base[key])
: value;
}
});
}
获得参考