在异步POST调用后,我面临着如何在react组件中使用redux刷新数据的问题。我已经在使用一个redux中间件来管理我的rest调用。
用例:
- 在react组件内部,用户创建一个新元素(通过REST-API将数据异步发送到后端(
- 在同一个react组件中,我有一个可选列表,该列表现在也应该包含新元素(带有生成的数据库ID(
在后端更新实体并随后刷新依赖列表的最佳反应+redux paradigma是什么?
向Sven 致以最良好的问候
对于像进行Rest调用这样的异步操作,您需要像thunk或saga这样的中间件来基于异步响应调度操作。这就是您的创建应该如何在中间件的高级别上工作:
- 使用有效负载调度创建操作
- 中间件将发出rest调用来创建对象
- 根据返回的响应,中间件将向商店发送进一步的操作,例如将新项目添加到列表中
感谢你的提示,我刚刚找到了答案。
Redux(带有Redux-thunk中间件(可以开箱即用地处理我的情况。只需将两个操作合并到一个"包装器操作"中即可。
Redux将异步执行"包装器操作"。但是,由于我在"包装器操作"中的"等待"语句,我的POST和GET请求将以正确的顺序同步调用,并且每个请求都会根据需要更新我的redux存储。
请参阅:https://github.com/reduxjs/redux-thunk
export const createEntityAndReloadEntities: ICrudPutAction<IEntityProfile> = newEntity => async dispatch => {
return Promise.all[
await dispatch({
type: "CREATE_ENTITY",
payload: axios.post(apiUrl, newEntity)
}),
await dispatch({
type: "FETCH_ENTITY_LIST",
payload: axios.get<IEntityProfile>(`${apiUrl}`)
})];
};