绝对不需要使用isSubmitting
选择器与reduxForm
hoc。 reduxForm
hoc会传递一个submitting
道具,该道具可用于检查表单是否正在提交。但是redux形式需要知道它何时提交。如果您的onSubmit
返回的值不是Promise,submitting
prop始终为false
,redux-form无法判断提交何时完成,但如果onSubmit
确实返回承诺(如@Sreeragh AR建议的那样),那么它将设置submitting
支柱为真,直到承诺解决或被拒绝。
也就是说,还有其他值得注意的地方:你在mapStateToProps
内部使用isSubmitting
选择器创建器,这真的很糟糕。这将为每个重新生成创建一个选择器。正确的做法是使用createMapStateToProps
函数。
const createMapStateToProps =()=> {
const isSubmittingSelector = isSubmitting('CreateNewAssignmentForm');
return (state, props) => {
const firstTemplate = _.first(props.templates.toList().toJS());
const course = props.courses.getIn([0, 'id']);
let values = { submitting: isSubmittingSelector(state) };
if (firstTemplate === undefined) {
return values;
}
if (firstTemplate) {
values = {
course,
template: firstTemplate,
submitting: isSubmittingSelector(state),
initialValues: {
template: firstTemplate.id,
wordCount: firstTemplate.essay_wordcount,
timezone: momentTimezone.tz.guess(),
label: 'TRANSPARENT',
},
};
}
return values;
}
}
export default connect(createMapStateToProps())(
reduxForm({
form: 'CreateNewAssignmentForm',
destroyOnUnmount: false,
shouldAsyncValidate,
shouldValidate,
})(CreateNewAssignmentForm),
);
嗨!你能展示'handleSubmit'函数吗? –
仅当您的onSubmit返回Promise时,submitting标志才起作用,以便redux-form可以追踪它何时开始和结束。 https://github.com/erikras/redux-form/issues/1238 –