在表单提交时调用异步redux操作创建者

在表单提交时调用异步redux操作创建者,redux,react-redux,react-final-form,final-form,Redux,React Redux,React Final Form,Final Form,在典型的React/Redux应用程序中,触发AJAX请求并在该请求启动/成功/失败时分派操作是非常常见的 然而,我找不到一种方法将这样一个函数与react final form集成在一起。它使用的是立即分派操作,但不允许我调用异步操作创建者 是否可以将react final form与使用异步操作创建者执行提交操作的redux应用程序集成?我希望不必将我的AJAX逻辑移动到reducer中。表单库关心的只是onSubmit函数返回一个承诺。如果分派由自定义动作创建者创建的动作可以返回一个承诺(

在典型的React/Redux应用程序中,触发AJAX请求并在该请求启动/成功/失败时分派操作是非常常见的

然而,我找不到一种方法将这样一个函数与react final form集成在一起。它使用的是立即分派操作,但不允许我调用异步操作创建者


是否可以将react final form与使用异步操作创建者执行提交操作的redux应用程序集成?我希望不必将我的AJAX逻辑移动到reducer中。

表单库关心的只是
onSubmit
函数返回一个
承诺。如果分派由自定义动作创建者创建的动作可以返回一个承诺(可能通过一些中间件?),这就是React Final Form所关心的。promise listener库更多用于副作用中间件,如Redux Saga。

检查此解决方案:

我的组成部分:

export function submitEdit(dataPath: string, payload: ActionWithCallback<number>): ActionWithDataPathBase<ActionWithCallback<number>> {
return {
    type: constants.EDIT_SUBMIT,
    dataPath,
    payload
};

export function submitEdit(dataPath:string,payload:ActionWithCallback):ActionWithDataPathBase

在示例中听起来很有用。。我认为几乎每一个进入react+redux的教程都使用redux thunk进行ajax操作。
export function submitEdit(dataPath: string, payload: ActionWithCallback<number>): ActionWithDataPathBase<ActionWithCallback<number>> {
return {
    type: constants.EDIT_SUBMIT,
    dataPath,
    payload
};
export interface ActionWithCallback<T> {
data: T,
callback?: ((errors?: SubmissionErrors | undefined) => void)
function* update(action: ActionWithDataPathBase<ActionWithCallback<number>>) {
try {
    const formData: PeopleForUpdateModel = yield select((state: AppState) => get(state.forms, action.dataPath));
    yield call(ajax.put, `/people/${action.payload.data}`, formData);
}
catch (error) {
    if (action.payload.callback) {
        const errors = handleFormErrors(error.response);
        yield call(action.payload.callback, errors);
    }
}
finally {
    yield put(actions.changeValue("edit.isLoading", false));
}