React Shows中的Reducer:无法将未定义或null转换为对象



我需要将reducer中的一些数据从数组转换为对象。所以我用Object.keys来做这个。但我开始得到这个错误,它不能转换未定义的。

经过一段时间的故障排除,我已经将reducer中的代码简化为最简单的形式,如下所示,但我仍然看到相同的错误。有人能告诉我这里出了什么问题吗?当然,现在我已经删除了Object.keys,我看到了一个略有不同的错误,但主要问题似乎是一样的。处于状态的对象未定义。

谢谢!

只是在我做console.log(state.collections["hats"]);时添加一些内容就在switch语句之前;帽子";密钥

TypeError: Cannot read property 'hats' of undefined

我的简化减速器代码:

import SHOP_DATA from '../../data/shop.data.js';
const INITIAL_STATE = {
collections:  {
hats:{
id: 1,
title: 'Hats',
routeName: 'hats',
items: [
{
id: 1,
name: 'Brown Brim',
price: 25
},
{
id: 2,
name: 'Blue Beanie',
price: 18
}
]
},
sneakers: {
id: 2,
title: 'Sneakers',
routeName: 'sneakers',
items: [
{
id: 10,
name: 'Adidas NMD',
price: 220
},
{
id: 11,
name: 'Adidas Yeezy',
price: 280
}
]
}
}
}
const collectionsReducer = (state= INITIAL_STATE, action) => {
switch(action.type) {
default:
return ["hats", "sneakers"].map(key => state.collections[key]);
}
}
export default collectionsReducer;

如下图所示更改reducer逻辑,它将在中工作

开关(动作类型({默认值:return["帽子","运动鞋"].map(key=>INITIAL_STATE["集合"][key](}

谢谢

没有密钥命名的运动鞋,这就是为什么它返回未定义的

最新更新