Redux表单:首次提交后未更新的字段
我正在mongodb中使用redux表单,由于以下错误,我无法进行第二次提交:Redux表单:首次提交后未更新的字段,redux,redux-form,redux-saga,Redux,Redux Form,Redux Saga,我正在mongodb中使用redux表单,由于以下错误,我无法进行第二次提交: {"message":"No matching document found for id \"590b02068012fb3f83e5da9d\"","name":"VersionError"} 这是因为表单中未更新文档的版本 首次提交的工程和数据已更新;我从REST端点获取一个新对象,并将其设置为状态。无论如何,表单提交的版本值不会更新,这会导致错误。是否需要在onSubmitSuccess回调时手动触发此更新
{"message":"No matching document found for id \"590b02068012fb3f83e5da9d\"","name":"VersionError"}
这是因为表单中未更新文档的版本
首次提交的工程和数据已更新;我从REST端点获取一个新对象,并将其设置为状态。无论如何,表单提交的版本值不会更新,这会导致错误。是否需要在onSubmitSuccess
回调时手动触发此更新
这是我的表格:
RegionEdit = reduxForm({
form: 'RegionEdit', // a unique identifier for this form
})(RegionEdit);
const mapStateToProps = createStructuredSelector({
initialValues: makeSelectRegion(),
});
function mapDispatchToProps(dispatch) {
return {
dispatch,
};
}
export default connect(mapStateToProps, mapDispatchToProps)(RegionEdit);
以下是我提交表格的方式:
submit(values) {
return new Promise((resolve, reject) => {
this.props.dispatch(saveRegion({ values, resolve, reject }));
});
}
下面是一个传奇故事:
export function* saveRegion(data) {
const payload = data.payload.values.toJS();
const reject = data.payload.reject;
const resolve = data.payload.resolve;
const requestURL = `${ENDPOINT_URL}/${payload._id}`;
try {
const region = yield call(request, requestURL, {
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
method: 'PUT' });
yield put(regionSaved(region));
resolve(region);
} catch (err) {
yield put(regionSavingError(err));
reject(err);
}
}
和regionSaved
触发SAVE\u REGION\u SUCCESS
操作,使此代码在减速机中执行:
case SAVE_REGION_SUCCESS:
return state
.set('region', fromJS(action.region));
我附上一些截图
我发现了问题,问题出在reduxForm实例化中,我只需要传递属性
enableReinitialize
设置为true
RegionEdit = reduxForm({
enableReinitialize: true,
form: 'RegionEdit', // a unique identifier for this form
})(RegionEdit);