TypeError: невозможно прочитать карту свойств undefined React.Js после перехода с 1 компонента на 2 родительских дочерних компонента

У меня был компонент, который извлекал и отображал данные из API, и он работал. Но для какой-то функции мне пришлось преобразовать этот компонент в 2 отдельных компонента (родительский и дочерний). Поскольку при этом не работает «TypeError: Cannot read property« map »of undefined», я получаю эту ошибку. Мне нужно, чтобы он работал только так (родительская, дочерняя структура). Как я могу это сделать ?

Вот родительский компонент: -

import React, { useEffect, useState } from "react";
import axios from "axios";
import PostListItem from "./PostListItem";

const PostList = () => {
  useEffect(() => {
    getPost();
  }, []);

  const [posts, setPosts] = useState([]);

  const getPost = async () => {
    const res = await axios.get("http://localhost:5000/posts/");
    setPosts(res.data);
  };

  const renderList = () => {
    return posts.map((post) => {
      return <PostListItem post = {post} />;
    });
  };

  return <div>{renderList()}</div>;
};

export default PostList;

Вот дочерний элемент: -

    import React from "react";
    
    const PostListComponent = (post) => {
      const renderDate = (dateString) => {
        const monthNames = [
          "January",
          "February",
          "March",
          .
.
.
.
        ];
        const date = new Date(dateString);
        return `${
          monthNames[date.getMonth()]
        } ${date.getDate()}, ${date.getFullYear()}`;
      };
    
      const renderTags = (tags) => {
        return tags.map((tag, index) => {
          index = index + 1;
          return <span key = {index}>{tag}</span>;
        });
      };
      return (
        <button key = {post._id}>
          <h3>{post.title}</h3>
          <span>{renderDate(post.createdAt)}</span>
          <div>{renderTags(post.tags)}</div>
        </button>
      );
    };
    
    export default PostListComponent;

Вот ошибка: -

TypeError: Cannot read property 'map' of undefined
  25 | const renderTags = (tags) => {
  26 |   return tags.map((tag, index) => {
  27 |     index = index + 1;
> 28 |     return <span key = {index}>{tag}</span>;
     | ^  29 |   });
  30 | };
  

Вам необходимо правильно деструктурировать сообщение. Const PostListComponent = ({post}) => {....

Anurag Sharma 04.04.2021 09:22

Спасибо, сработало :-)

Shrey Srivastav 04.04.2021 09:37
Поведение ключевого слова "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
2
15
0

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