天天看點

index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中

index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中

index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中
index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中index,action,reducer,saga之間的運轉,實作将一個接口傳回資料,傳到另個一個接口傳回資料中
  1. index ,在index檔案中找到請求school接口的action,找到這個接口傳回的資料,比如data,拿到data的index,此例中是data.data[index],在檔案中通過map循環可以得到,拿到這個index;
  2. 第二個接口觸發的方法中, this.props.onClickCardBottom(launchData, index);,将index傳到saga檔案當中;
  3. saga 檔案通過 action.payload ,

    let indexTemp = action.payload.index;

    delete action.payload.index;//去掉index;防止傳給背景的參數裡面有index;

  4. 在 if (response.statusCode === 200) {}請求成功的時候;把index參數和response一起傳給reducer;

    let params={

    index:indexTemp,

    response

    }; yield put(getClassSectionSuccess(params));

  5. 在reducer中通過action.payload拿到saga傳過來的params參數;
  6. 再通過**_** 克隆一個state上面的值,也就是第一個接口傳回的資料(classData);

    let newClassData:any = _.cloneDeep(state.classData);防止中繼資料被改變;

  7. newClassData.data.data[action.payload.index][‘lastWeekActiveRate’] = action.payload.response.data;

    return Object.assign({}, state, {

    ** classData: newClassData,**

    });

    讓新的資料重新指派給舊的傳回值,也就是第一個接口傳回的data;

    然後在index檔案中取資料即可;