Функциональный компонент не отображается

#javascript #reactjs #spotify

#javascript #reactjs #spotify

Вопрос:

Я пытаюсь отобразить песни, но по какой-то причине мой компонент песен даже не выполняется. Консоль.оператор log внутри компонента Songs также не регистрируется в консоли. Также никаких ошибок любого рода вообще не обнаружено.

Вот мой основной компонент, из которого я вызываю компонент Songs

 


import './body.css'
import React from 'react'
import Header from './Header'
import { useStateValue } from './StateProvider';
import FavoriteIcon from '@material-ui/icons/Favorite';
import PlayCircleFilledIcon from '@material-ui/icons/PlayCircleFilled';
import MoreHorizIcon from '@material-ui/icons/MoreHoriz';
import Songs from './Songs.js'

function Body( {spotify}) {
    const [{recently_played},dispatch] = useStateValue();
    return (
        <div className="body">
           <Header spotify={spotify}   />

           <div className="body__info">
               <img src={recently_played?.images[0].url} alt=""/>
               <div className="body__infotext">
                   <strong>PLAYLIST</strong>
                    <h2>On Repeat</h2>
                    <p>{recently_played?.description}</p>
               </div>
           </div>
           <div className="body__songs">
               <div className="body__icons">
                   <PlayCircleFilledIcon className="body__shuffle"/>
                   <FavoriteIcon fontSize="large"/>
                   <MoreHorizIcon />
               </div>

               {recently_played?.tracks.items.map(item=>{
                   
                   <Songs track={item.track} />
                  
               })}
           </div>

        </div>
    )
}

export default Body


  

Вот компонент песен

 import React from "react";
import './SongRow.css'

function Songs({ track }) {
  console.log(track);
  return (
    <div className="songRow" >
      <img className="songRow__album" src={track.album.images[0].url} alt="" />
      <div className="songRow__info">
        <h1>{track.name}</h1>
        <p>
          {track.artists.map((artist) => artist.name).join(", ")} -{" "}
          {track.album.name}
        </p>
      </div>
    </div>
  );
}

export default Songs;
  

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

1. Может recently_played?.tracks.items быть, это пустой массив? Вы проводили какую-либо отладку, чтобы выяснить это?

2. Он не пустой. Я проверил

Ответ №1:

Вы ничего не возвращаете внутри карты

    {recently_played?.tracks.items.map(item => {
          return <Songs track={item.track} />;
       })}

 
  

[или] используйте сокращенную версию функции arrow

    {recently_played?.tracks.items.map(item => <Songs track={item.track} />)}
  

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

1. Да, это сработало.. Я не могу поверить, что пропустил это. Большое вам спасибо