请稍等 ...
×

采纳答案成功!

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

reducer中 发送多个fetch请求

老师,您好: 我买了您的课程 感觉讲的挺好,我再实际的工作中遇到一个问题。我有个业务场景,进入列表页,会先发送一个A请求,根据A请求的返回的结果,在发送B请求。 也就是说B请求的参数,是A请求的结果。这个业务场景在reducer中 怎么实现呢 请老师指点。
我现在的写法是先发送请求A,从A的返回结果中取出请求B用到的参数,虽然这种写法实现了我的业务功能,这种写法不优雅。
如下是我的代码

	//加载左侧列表
    loadDivisionList: (hosid) => {
        return (dispatch, getstate) => {
            const targetURL = url.API_HOSPITAL_DIVSION_LIST(hosid)
            return post(targetURL).then(
                data => {
                    data.data.map((item, index) => {
                        if (index === 0) {
                            item.isSel = true
                        } else {
                            item.isSel = false
                        }
                    })
                    dispatch(fetchDivisionListSuccess(data.data))
                    const targetURL = url.API_DIVSION__DEPARTMENT_LIST(hosid, data.data[0].id)
                    return dispatch(fetchDepartmentList(targetURL))
                },
                error => {

                }
            )
        }
    },

图片描述

正在回答 回答被采纳积分+3

1回答

艾特老干部 2019-06-21 17:17:07

你好。你这种写法是没有问题的,action中本来就应该负责主要的数据逻辑,组件只关注数据的使用。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉8061310 #1
    老师 我有个想法 就是 能不能再你写的api.js 处理我的业务。 但是我没思路 能不能指点下
    回复 有任何疑惑可以回复我~ 2019-06-22 12:19:20
  • 艾特老干部 回复 提问者 慕粉8061310 #2
    如果这种场景在你项目中出现的比较多,也可以考虑进行封装。比如,现在的api中间件只能处理一个异步请求的action,你可以改造成能处理两个action,这时,api中间件除了接收之前的参数,还需要接收关于第二个请求的参数,以及如何从第一个请求的返回结果中获取第二个请求所需的数据(通过传入要获取的属性名或者回调函数)
    回复 有任何疑惑可以回复我~ 2019-06-24 10:52:13
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号