javascript - 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
,但实际输出是一个空数组
解决方案
您定义cardsSkull
为数组(这是引擎盖下的对象),但由于idLis
不是数字,cardsSkull[idLis] = {};
因此不会填充对象的数组部分内的元素,而是填充数组对象本身的元素。因此,在您的屏幕截图中,length
您的数组的属性仍然是0
! 使用数字idLis
,您的问题就解决了。
推荐阅读
- reactjs - 过滤具有多个字符串值的对象
- python - python .index() 和 .find() 之间的时间复杂度差异
- payment-gateway - 不同的提供商支付佣金
- vba - VBA + Pivot:在过滤器更改时运行脚本,但在枢轴启动刷新之前
- c# - 我可以从 ac# 9 记录的自动生成方法中隐藏敏感属性值吗?
- python - 从空格分隔的字符串创建 Pandas DataFrame
- time-complexity - 这些代码的时间和空间复杂度
- azure-devops - 如何在 azure devops 中知道分叉存储库的源存储库?
- php - Composer - 供应商文件夹内的供应商文件夹 - 找不到类
- javascript - 无法更新