index,action,reducer,saga之间的运转,实现将一个接口返回数据,传到另个一个接口返回数据中
- index ,在index文件中找到请求school接口的action,找到这个接口返回的数据,比如data,拿到data的index,此例中是data.data[index],在文件中通过map循环可以得到,拿到这个index;
- 第二个接口触发的方法中, this.props.onClickCardBottom(launchData, index);,将index传到saga文件当中;
-
saga 文件通过 action.payload ,
let indexTemp = action.payload.index;
delete action.payload.index;//去掉index;防止传给后台的参数里面有index;
-
在 if (response.statusCode === 200) {}请求成功的时候;把index参数和response一起传给reducer;
let params={
index:indexTemp,
response
}; yield put(getClassSectionSuccess(params));
- 在reducer中通过action.payload拿到saga传过来的params参数;
-
再通过**_** 克隆一个state上面的值,也就是第一个接口返回的数据(classData);
let newClassData:any = _.cloneDeep(state.classData);防止元数据被改变;
-
newClassData.data.data[action.payload.index][‘lastWeekActiveRate’] = action.payload.response.data;
return Object.assign({}, state, {
** classData: newClassData,**
});
让新的数据重新赋值给旧的返回值,也就是第一个接口返回的data;
然后在index文件中取数据即可;