
Óscar Andrés Ugarte De La Fuente
PreguntaBuenas tardes, me encuentro con el siguiente error en la consola.
//App.jsx import React from 'react'; import Header from '../components/Header'; import Search from '../components/Search'; import Categories from '../components/Categories'; import Carousel from '../components/Carousel'; import CarouselItem from '../components/CarouselItem'; import Footer from '../components/Footer'; import useInitialState from '../hooks/useInitialState'; import '../assets/styles/App.scss'; const API = 'http://localhost:3000/initialState/'; const App = () => { const initialState =useInitialState(API); return initialState.lenght === 0 ? <h1>Loading...</h1>:( <div className="App"> <Header></Header> <Search></Search> {/* validamos si es que en la api si tenga objetos en array de mi lista */} {initialState.mylist.lenght > 0 && <Categories title="Mi lista"> <Carousel> {initialState.mylist.map(item=> <CarouselItem key={item.id}{...item}> </CarouselItem> )} </Carousel> </Categories> } <Categories title="Tendencias"> <Carousel> {initialState.trends.map(item=> <CarouselItem key={item.id}{...item}> </CarouselItem> )} </Carousel> </Categories> <Categories title="Originales de platzi video"> <Carousel> <CarouselItem> {initialState.originals.map(item=> <CarouselItem key={item.id}{...item}> </CarouselItem> )} </CarouselItem> </Carousel> </Categories> <Footer></Footer> </div> ) }; export default App;
//useInitialState.js import {useState,useEffect} from 'react'; const useInitialState = (API) =>{ const [videos, setVideos] = useState([]); useEffect(()=>{ fetch(API) .then(response => response.json()) .then(data => setVideos(data)); }, []); return videos; } export default useInitialState;

Lucía Amaya Sánchez Hernández
Creo que el problema que tienes es que "lenght" está mal escrito. es length. Intenta corregir eso a ver si te funciona.
esta es la línea del error return initialState.lenght === 0 ? <h1>Loading...</h1>:(

Óscar Andrés Ugarte De La Fuente
en el app.jsx, tenia un <CarouselItem> que envonvia al .map, solo lo tuve que quitar
<Categories title="Originales de platzi video"> <Carousel> {initialState.originals.map(item=> <CarouselItem key={item.id}{...item}></CarouselItem> )} </Carousel> </Categories> <Footer></Footer>
Y en el useInitialState tuve que agregar lo siguiente para que funcionara
import {useState,useEffect} from 'react'; const useInitialState = (API) =>{ const [videos, setVideos] = useState({ mylist: [], trends: [], originals: [] }); // ^ ^ useEffect(()=>{ fetch(API) .then(response => response.json()) .then(data => setVideos(data)); }, []); return videos; } export default useInitialState;```