Javascript 词法作用域错误,属性未定义
我的linter警告我在我的Javascript 词法作用域错误,属性未定义,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的linter警告我在我的reducer中有一个词法范围错误,我将声明从switch语句中移出,如下所示: export function eventsForMonth(state = {}, action) { const { events: {}, day: {} } = action.data; const newItems = {}; switch (action.type) { case "EVENTS_MONTH":
reducer
中有一个词法范围错误,我将声明从switch
语句中移出,如下所示:
export function eventsForMonth(state = {}, action) {
const { events: {}, day: {} } = action.data;
const newItems = {};
switch (action.type) {
case "EVENTS_MONTH":
Object.keys(events).map(event => {
newItems[event] = [...events[event].dots];
});
for (let i = -15; i < 85; i++) {
const time = day.timestamp + i * 24 * 60 * 60 * 1000;
const strTime = timeToString(time);
if (!newItems[strTime]) {
newItems[strTime] = [];
}
}
return {
...newItems
};
case "EVENTS_CALENDAR_MONTH":
// ...
导出函数eventsForMonth(状态={},操作){
const{events:{},day:{}=action.data;
const newItems={};
开关(动作类型){
案例“事件/月份”:
Object.keys(events.map)(event=>{
newItems[event]=[…事件[event].dots];
});
for(设i=-15;i<85;i++){
const time=day.timestamp+i*24*60*60*1000;
const strTime=timeToString(时间);
如果(!newItems[strTime]){
newItems[strTime]=[];
}
}
返回{
…新项目
};
案例“事件日历月”:
// ...
但是,现在我遇到了一个错误:无法读取未定义的属性事件。如何在我的
开关
之外声明我的事件
,而不获取错误?检查您的操作。数据内容,可能错误是说数据键未定义hmmconst{events:{},day:{}
?您的意思是const{events={},day={}
?离题。你的代码很难推理。为什么你要使用map
来变异一些外部对象?为什么你有两个循环用不同的数据填充同一个对象?那些神奇的常数是什么15、85?为什么你在返回之前要浅层复制newItems
对象?我还在学习javascript,这是最好的方法我可以考虑从我的api格式化数据。