Esto es lo que probé
episode.js
import Parser from "rss-parser"; import React from "react"; export default function Episode() { const parser = new Parser(); const url1 = "https://anchor.fm/s/75abc654/podcast/rss"; const [data, setData] = React.useState({}); (async () => { let data = await parser.parseURL(url1); setData(data); // console.log(data.title) // data.items.forEach((item) => { // console.log(item.title) //console.log(item.pubDate.slice(5, 17)) //console.log(item.enclosure.url) // console.log(item.itunes.image) }); })(); return( <h1>{item.title}</h1> {data.items.map((item, index)=>{ return( <h1>{item.title}</h1> )})} ) }Y la salida es una pantalla en blanco... No hay error en la consola... Ayúdame a obtener los datos del feed RSS sin una pantalla en blanco
¡Estás llamando al método async por tiempo ilimitado! Debe llamarlo una vez a través useEffect justo cuando el componente se represente por primera vez:
import Parser from "rss-parser"; import React, { useEffect } from "react"; function Episode() { const parser = new Parser(); const url1 = "https://anchor.fm/s/75abc654/podcast/rss"; const [data, setData] = React.useState({}); useEffect(() => { (async () => { let data = await parser.parseURL(url1); console.log(data); setData(data); })(); }, []); return ( <> {data.items?.map((item, index) => ( <h1>{item.title}</h1> ))} </> ); } export default function App() { return <Episode />; }Simplemente reemplace su función asíncrona con un gancho useEffect como este
useEffect(() => { async function fetchMyAPI() { let data = await parser.parseURL(url1); setData(data); // console.log(data.title) // data.items.forEach((item) => { // console.log(item.title) //console.log(item.pubDate.slice(5, 17)) //console.log(item.enclosure.url) // console.log(item.itunes.image) } fetchMyAPI(); }, []);Esto se ejecutará una vez cada vez que su componente se cargue en la pantalla
También cambie data.item.map a
{data.items?.map((item, index) => { return <h1>{item.title}</h1>; })}De lo contrario, arrojará un error en el primer render