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檔案中取資料即可;