絕對不需要使用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 –