Javascript 如何在redux saga中等待所有动作(请求后成功/失败)发送?
我有以下行动:Javascript 如何在redux saga中等待所有动作(请求后成功/失败)发送?,javascript,redux,redux-saga,Javascript,Redux,Redux Saga,我有以下行动: export function createRequest(inputValues) { return { type: actions.PERSON_CREATE_REQUEST, payload: { inputValues } }; } export function createSuccess(person) { return { type: actions.PERSON_CREATE_SUCCESS, pa
export function createRequest(inputValues) {
return {
type: actions.PERSON_CREATE_REQUEST,
payload: {
inputValues
}
};
}
export function createSuccess(person) {
return {
type: actions.PERSON_CREATE_SUCCESS,
payload: {
person: person
}
};
}
export function createFailure(error) {
return {
type: actions.PERSON_CREATE_FAILURE,
payload: {
error
}
};
}
传奇:
表单提交时调用的函数:
handleSubmit = async (event, values) => {
event.preventDefault();
await store.dispatch(action.createRequest(values));
if (this.props.error === null) {
store.dispatch(reset(this.props.form));
}
};
在
之后等待store.dispatch(action.createRequest(values))代码>我想检查是否调度了PERSON\u CREATE\u FAILURE
或PERSON\u CREATE\u SUCCESS
。在PERSON\u CREATE\u FAILURE
I设置映射到道具的error
存储区。但在发出个人创建请求
后,调用带有if
的下一行代码。但是我需要等到PERSON\u CREATE\u FAILURE
或PERSON\u CREATE\u SUCCESS
dispatch。如何将saga更改为等待actions分派?在handleSubmit
函数中,只分派createRequest
操作,不要在代码中的此时等待它的响应
现在,如果请求失败,编写一个reducer来处理PERSON\u CREATE\u失败
操作。在这个缩减器中,您可以适当地设置应用程序状态,即重置表单状态。然后对包含表单的组件使用MapStateTrops
,表单将自动重新渲染以匹配更新(在本例中是重置)的表单状态
请注意,使用这种方法,您需要在Redux存储中创建表单的状态,但这样做将简化应用程序的状态生命周期。我使用Redux表单,以便它连接到存储。我有MapStateToProps。问题是顺序。它现在的工作原理:PERSON_CREATE_请求、我的代码和重置表单,因为错误未更新、PERSON_CREATE_成功/PERSON_CREATE_失败。我想让它发送PERSON_CREATE_请求和PERSON_CREATE_成功/PERSON_CREATE_失败,然后在更新我的错误时用表单重置进行编码。我想说的是,我不认为您需要在handleSubmit函数中等待createRequest操作的结果。您可以通过还原剂实现所需的行为并作出反应。
handleSubmit = async (event, values) => {
event.preventDefault();
await store.dispatch(action.createRequest(values));
if (this.props.error === null) {
store.dispatch(reset(this.props.form));
}
};