Как определить список .map в компоненте React с пустым массивом?

У меня есть два списка, которые я хочу обновлять динамически, если щелкнуть, он переместит элемент в массив либо в «заархивированный» список, либо в «избранный» список, я сопоставил каждый список, который хранится в состоянии родительских компонентов, но я получаю ошибка x не определена, поэтому я проверяю, есть ли в массиве более одного элемента, но затем он делает список недоступным и выдает ошибку каждого списка, который не определен, я не уверен, как правильно отображать каждый массив, когда нет начальных элементов. Код следует ниже

import React from 'react'
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';

import PropertyCard from '../../card/Property/index'

import '../../../../../sass/includes/sidebar/Result/sidebar.scss'

const ResultsSideBar = (props) => {
  const favourites = props.favourites.results.map((result) =>
    <li className = "fvt-List_Item">
      <PropertyCard
        key = {result.id}
        title = {result.title}
        price = {result.price}
        beds = {result.beds}
        bathrooms = {result.bathrooms}/>
    </li>
  )

  const archived = props.archived.results.map((result) =>
    <li className = "fvt-List_Item">
      <PropertyCard
        key = {result.id}
        title = {result.title}
        price = {result.price}
        beds = {result.beds}
        bathrooms = {result.bathrooms}/>
    </li>
  )

  return (
    <Tabs className = "rst-SideBar">
      <TabList className = "rst-SideBar_Tabs">
        <Tab className = "rst-SideBar_Tab">
          <p className = "rst-SideBar_Text">0 Favourites</p>
        </Tab>
        <Tab className = "rst-SideBar_Tab">
          <p className = "rst-SideBar_Text">Archived</p>
        </Tab>
      </TabList>

      <TabPanel className = "rst-SideBar_TabContent rst-SideBar_TabContent-favourites">
        <div className = "fvt-List">
          <ul className = "fvt-List_Items">
            {props.favourites.length ? {favourites} : <div>You have no favourites. </div>}
          </ul>
        </div>
      </TabPanel>

      <TabPanel className = "rst-SideBar_TabContent rst-SideBar_TabContent-archived">
        <div className = "fvt-List">
          <ul className = "fvt-List_Items">
            {props.archived.length ? {archived} : <div>You have no archived items. </div>}
          </ul>
        </div>
      </TabPanel>
    </Tabs>
  )
}

export default ResultsSideBar

Состояние родительского компонента для справки:

class Results extends React.Component{
  constructor(props) {
    super(props)

    this.state = {
      results: resultsData,
      favourites: [],
      archived: [],
    }
  }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
30
1

Ответы 1

Вы делаете props.favourites.results.map, который будет работать с этой структурой:

var props = {
    favourites: {
        results: []
    }
}

Но у вас есть такая структура:

var props = {
    favourites: []
}

Итак, favourites.results не определен, что означает, что favourites.results.map эквивалентен undefined.map, что является ошибкой ReferenceError.

Спасибо, нужно снова найти эту утку!

Eik Hunter 01.05.2018 16:48

Другие вопросы по теме