Неперехваченная ошибка типа: не удается прочитать свойство ‘map’ неопределенного значения в приложении reactjs

#reactjs

#reactjs

Вопрос:

Я получаю сообщение об ошибке: не удается прочитать свойство ‘map’ undefined, но когда я делаю консольный журнал элементов (который является массивом, используемым для сопоставления), получается нормально, что означает, что он был правильно передан через props, но внутри рендеринга он не может прочитать массив элементов для сопоставленияэто

изображение результата консольного журнала

 import React from 'react';

const ListGroup = (props) => {
  const { items, onItemSelect, currentGenre } = props;

  console.log(items);
  return (
    <ul className="list-group">
      {items.map((item) => (
        <li
          onClick={() => onItemSelect(item)}
          key={item.id}
          className={item === currentGenre ? 'list-group-item active' : 'list-group-item'}
        >
          {item.name}
        </li>
      ))}
    </ul>
  );
};

export default ListGroup;  

Может кто-нибудь, пожалуйста, помочь мне с этим

Комментарии:

1. Где items определено? Каково его начальное значение? Вы извлекаете элементы асинхронно?

2. Можете ли вы предоставить результат вашего console.log?

3. откуда берутся эти элементы и каково начальное состояние этих элементов?

4. измените это с {items.map(item=>( на {items.length > 0 amp;amp; items.map(item=>(

5. @NishargShah если items значение не определено, item.length приведет к аналогичной ошибке —> Cannot read property 'length' of undefined

Ответ №1:

Сначала вам нужно убедиться, что вы передаете правильные значения в качестве реквизитов этого компонента. В вашем случае items не определено, поэтому результатом является ошибка. Чтобы быть устойчивым к ошибкам такого типа, у вас может быть такое условие:

 return (
  <ul className="list-group">
    {items amp;amp; items.length
      ? items.map((item) => (
          <li
            onClick={() => onItemSelect(item)}
            key={item.id}
            className={item === currentGenre ? 'list-group-item active' : 'list-group-item'}
          >
            {item.name}
          </li>
        ))
      : null}
  </ul>
);
  

Вместо null вы возвращаете любой компонент по своему усмотрению.

Комментарии:

1. вы не можете добавить ответ после того, как OP решил это с помощью ответа другого пользователя, даже если это комментарий

2. О, извините, я не видел, что вы ответили на это в комментарии. В будущем я буду сначала читать комментарии