我使用的是React Final Form,并希望在我的表单上单击Submit时调用API。
我正在尝试遵循"Async Redux提交"。例子和被卡住。我正在使用来自react-redux-promise-listener的MakeAsyncFunction
,并且可以看到在start
中定义的Action被分派,但是很难理解应该拿起它来做一些事情-即调用我想使用的这个API。
简化格式代码如下:
<MakeAsyncFunction
listener={promiseListener}
start={'FORM_SUBMIT'}
resolve={'FORM_COMPLETE'}>
{submit_form => {
return (
<Form onSubmit={submit_form}
render={({ submitting, handleSubmit }) => (
<form onSubmit={handleSubmit}>
<Paper>
<Grid container>
<<fields>>
</Grid>
<Grid>
<Button type="submit"
disabled={submitting}>
Submit
</Button>
</Grid>
</Paper>
</form>
)} />
);
}}
</MakeAsyncFunction>
我有一个可以拾取这个动作的Reducer,但我知道在Reducer中做外部调用这样的事情是不好的做法,所以我避开了它。
我应该做些什么来处理那个分派的动作?
我使用Redux-Thunk中间件来进行API调用,这些调用是由Action creator定义的。这些在我的应用程序的其他地方都很好,但它将它们连接到我完全卡住的表单提交。
我在这里看到过一个类似的问题,但没能理解答案(尽管它是由图书馆的作者!),所以我希望有人能进一步帮助我。我对React和一般的web开发(c#)很陌生。. NET api和数据库是我的领域),所以任何建议都是非常感谢的。谢谢!
下面是一个关于CodeSandbox
的简化示例交换您的中间件在createStore
的顺序似乎已经修复了它?
composeEnhancers(applyMiddleware(thunk, reduxPromiseListener.middleware))
不是
composeEnhancers(applyMiddleware(reduxPromiseListener.middleware, thunk))
不要问为什么。我已经三年没看过这些图书馆了。