Javascript React一直在说,map不是一个函数,我尝试过的任何东西都不起作用?
我有一个使用axios从和API获取清单的组件。当主页第一次加载时,所有列表都被检索并加载良好,但当我转到列表详细信息页面并返回主页时,我会收到一个“listings.map不是函数”错误,当我刷新页面时,我不会收到错误并加载列表 以下是组件(尝试使用加载布尔值,但未执行任何操作): 和减速器:Javascript React一直在说,map不是一个函数,我尝试过的任何东西都不起作用?,javascript,reactjs,axios,Javascript,Reactjs,Axios,我有一个使用axios从和API获取清单的组件。当主页第一次加载时,所有列表都被检索并加载良好,但当我转到列表详细信息页面并返回主页时,我会收到一个“listings.map不是函数”错误,当我刷新页面时,我不会收到错误并加载列表 以下是组件(尝试使用加载布尔值,但未执行任何操作): 和减速器: const initialState = { listings: [], isLoading: true, }; export default function (state = initia
const initialState = {
listings: [],
isLoading: true,
};
export default function (state = initialState, action) {
switch (action.type) {
case GET_LISTINGS:
return {
...state,
listings: action.payload,
isLoading: false,
};
case GET_LISTING:
return {
...state,
listings: action.payload,
isLoading: false,
};
case CREATE_LISTING:
return {
...state,
listings: [...state.listings, action.payload],
};
case CLEAR_LISTINGS:
return {
...state,
listings: [],
};
default:
return state;
}
}
只是不知道它是如何工作的,但有时却不知道。列表也声明为初始状态的数组。如果列表变量类型为 反对 然后你必须像这样映射:
const object1 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
另一方面,如果变量是
排列
然后:
您能在返回之前使用console.log(列表,列表类型)吗?
console.log(列表)
每次您尝试使用它时,都会看到它是如何随时间变化的。基本上,他们说的是,如果您从api获取了大量内容,请确保数组是扁平的。listings
是一个对象。这就是这个错误的原因。要看到这一点,请暂时删除映射
,并将{JSON.stringify(listings)}
放在对象上。因此,请确保listings是一个数组
const initialState = {
listings: [],
isLoading: true,
};
export default function (state = initialState, action) {
switch (action.type) {
case GET_LISTINGS:
return {
...state,
listings: action.payload,
isLoading: false,
};
case GET_LISTING:
return {
...state,
listings: action.payload,
isLoading: false,
};
case CREATE_LISTING:
return {
...state,
listings: [...state.listings, action.payload],
};
case CLEAR_LISTINGS:
return {
...state,
listings: [],
};
default:
return state;
}
}
const object1 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
const numbers = [2, 4, 6, 8];
const squares = numbers.map(number => number * numbers);
console.log(squares);
// output: Array [4, 16, 36, 64]