首页 > 解决方案 > Reducer 不断返回一个空数组

问题描述

我试图在用数据填充它后从减速器返回一个数组,但它总是返回一个空数组。

export default function dashboards(state: any = dashboardsState, action: any) {
 // more code
  if (action.type === Types.LOAD_DASHBOARD_SUCCESS) {
    // create the cards holder in the store
    var cardsSkull: any = [];
    Object.keys(action.payload.lists).map((idLis: any) => {
      cardsSkull[idLis] = {};
      console.log("still up");
    });
    action.payload.importedDashboards.map((impDash: any) => {
      Object.keys(impDash.mappedLists).map((key: any) => {
        const mpList = impDash.mappedLists[key];
        cardsSkull[mpList.idlistLocal][impDash.remote_board_id] = [1, 2, 3];
        console.log("still working");
      });
    });
    console.log(cardsSkull);
    // assign and ready to go
    return Object.assign({}, state, {
      selectedDashboardData: action.payload,
      cards: cardsSkull
    });
  }
// more code
return state;
}

当我console.log(cardsSkull)一切看起来都正确时。

在此处输入图像描述

我希望在填充后cards具有值cardsSkull,但实际输出是一个空数组

标签: javascriptreactjstypescript

解决方案


您定义cardsSkull为数组(这是引擎盖下的对象),但由于idLis不是数字,cardsSkull[idLis] = {};因此不会填充对象的数组部分内的元素,而是填充数组对象本身的元素。因此,在您的屏幕截图中,length您的数组的属性仍然是0! 使用数字idLis,您的问题就解决了。


推荐阅读