Javascript React一直在说,map不是一个函数,我尝试过的任何东西都不起作用?

Javascript React一直在说,map不是一个函数,我尝试过的任何东西都不起作用?,javascript,reactjs,axios,Javascript,Reactjs,Axios,我有一个使用axios从和API获取清单的组件。当主页第一次加载时,所有列表都被检索并加载良好,但当我转到列表详细信息页面并返回主页时,我会收到一个“listings.map不是函数”错误,当我刷新页面时,我不会收到错误并加载列表 以下是组件(尝试使用加载布尔值,但未执行任何操作): 和减速器: const initialState = { listings: [], isLoading: true, }; export default function (state = initia

我有一个使用axios从和API获取清单的组件。当主页第一次加载时,所有列表都被检索并加载良好,但当我转到列表详细信息页面并返回主页时,我会收到一个“listings.map不是函数”错误,当我刷新页面时,我不会收到错误并加载列表

以下是组件(尝试使用加载布尔值,但未执行任何操作):

和减速器:

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]