请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

集成redux后的一个疑问

目前的项目使用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回答

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标4541063 #1
    非常感谢,自己后来实现代码时忽略了两个细节,在此说明一下方便其他的同学理解.
    如何保证异步action返回的都是Promise对象,有两个地方要注意.1在书写action函数时最后一定要加上return, 例如return dispatch(actioType());2.在redux中间件api.js里也要加上return,将axios的请求结果返回.
    回复 有任何疑惑可以回复我~ 2019-09-12 14:38:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信