Siento que me estoy perdiendo algo obvio, pero por mi vida no puedo averiguar qué es lo que me estoy perdiendo. Básicamente, estoy tratando de realizar una llamada de búsqueda en una llamada y luego usar esos datos dentro de la página. Sin embargo, no puedo hacer que los datos funcionen en la página. Funciona si lo consuelo. Lo registro dentro de la etiqueta, pero una vez que lo intento en el HTML, no estoy definido. ¿Alguna idea de lo que estoy haciendo mal? ¡Gracias por cualquier ayuda!
<script> let gameinfo = async (chardata) => { chardata = toTitleCase(chardata); const gamedetails = await fetch('https://api.igdb.com/v4/games', { method: 'POST', headers: { 'Access-Control-Allow-Origin': '*', 'Content-type': 'application/json' }, body: `fields *;\nwhere name= "${chardata}";` }) .then((res) => res.json()) .then((gamedata) => { gamedata.map((e) => { console.log(e); }); return gamedata; }) .catch((e) => { console.log(e); }); }; export let gameJson = gameinfo('Snatcher'); </script>que devuelve un registro de consola de la variable asignada.
y la llamada en el html:
<main> <div class="mainContent"> <div class="contentBlock"> {console.log(gameJson)} </div> </div> </main>que devuelve indefinido
Primero no gamedetails .
Para gameinfo , debe llamarse en la devolución de llamada de onMount con await para obtener gameJson
import { onMount } from 'svelte' let gameinfo = async (chardata) => { chardata = toTitleCase(chardata); const gamedetails = await fetch('https://api.igdb.com/v4/games', …) // you can verify it's not undefined here console.log('check:', gamedetails) return gamedetails } export let gameJson onMount(async () => { gameJson = await gameinfo('Snatcher') })