集成redux后的一个疑问

来源:16-1 课程总结

慕标4541063

2019-08-09

目前的项目使用react开发的,有个数据列表页面使用的是better-scroll插件做移动端的滑动效果.better-scroll这个插件可以new出一个对象this.scroll,然后通过这个对象可以对列表的上拉刷新和下拉加载事件进行监听.但是呢这个插件有个特点就是一旦你下拉加载后,过一会儿你要执行 this.scroll.finishPullUp() 这个API告诉better-scroll下拉加载完毕了.现在遇到的问题是,我通过监听下拉加载事件,在该事件中派发一个异步的action去请求的后台数据,我想在数据请求成功后,再执行this.scroll.finishPullUp()表示下拉加载完毕了.可是数据请求成功只有在reducer中才知道啊,我总不能把this.scroll作为action的参数最终传给reducer让它来执行吧.
这个问题可以抽象成这样的一个情景,我如何在react页面组件中派发了一个异步的action并确认该action引发的一系列的行为都执行完毕后(包括reducer里面的数据修改)再去执行某个行为

写回答

1回答

艾特老干部

2019-08-14

你好。首先你需要保证异步action返回的都是Promise对象(课程中的代码都是这么做的),然后组件中调用action函数时,就可以在返回的Promise.then()中执行你的逻辑了。

0
1
慕标4541063
非常感谢,自己后来实现代码时忽略了两个细节,在此说明一下方便其他的同学理解. 如何保证异步action返回的都是Promise对象,有两个地方要注意.1在书写action函数时最后一定要加上return, 例如return dispatch(actioType());2.在redux中间件api.js里也要加上return,将axios的请求结果返回.
2019-09-12
共1条回复

React16+Redux实战企业级大众点评Web App

从架构设计到部署上线,带你学习React技术栈与核心思想

1071 学习 · 306 问题

查看课程