Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

58
Views
Intentando consola. registrar datos dentro de useEffect. No registra ninguna información
function UserAccounts() { const [accounts, setAccounts] = useState(); useEffect(() => { async function fetchAccounts() { const res = await fetch( 'https://proton.api.atomicassets.io/atomicassets/v1/accounts' ); const { accounts } = await res.json(); setAccounts(accounts); console.log(accounts); } fetchAccounts(); }, []); }

Estoy tratando de entender por qué console.log no muestra nada en este ejemplo y cuál es la forma correcta de console.log los datos que se obtienen de la API.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Bueno, debe obtener la estructura correcta de la carga útil devuelta de la API. No tiene una propiedad de accounts .

La carga útil se ve así:

 { "success":true, "data":[{"account":"joejerde","assets":"11933"},{"account":"protonpunks","assets":"9072"}], "queryTime": 1646267075822 }

Entonces puede cambiar el nombre de la propiedad data mientras se desestructura. const { data: accountList } = await res.json();

 function UserAccounts() { const [accounts, setAccounts] = useState(); useEffect(() => { async function fetchAccounts() { const res = await fetch( 'https://proton.api.atomicassets.io/atomicassets/v1/accounts' ); const { data: accountList } = await res.json(); setAccounts(accountList); // logging both the state and the fetched value console.log(accounts, accountList); // accounts (state) will be undefined // if the fetch was successful, accountList will be an array of accounts (as per the API payload) } fetchAccounts() }, []) return <div> {JSON.stringify(accounts)} </div> }

Editar: usar algún otro nombre de variable durante la desestructuración, confuso usar el mismo nombre de variable que el estado ( accounts ).

códigos de trabajoandbox

about 4 years ago · Juan Pablo Isaza Report

0

Una cosa que cambiaría es trabajar con las declaraciones try/catch que rodean async/await. Si su declaración de espera falla, nunca llegará a la declaración de console.log. A menos que tenga otro componente que maneje esos errores, lo usaría de esa manera.

Esa es mi sugerencia:

 function UserAccounts() { const [accounts, setAccounts] = useState(); useEffect(() => { try { async function fetchAccounts() { const res = await fetch( 'https://proton.api.atomicassets.io/atomicassets/v1/accounts' ); const { accounts } = await res.json(); setAccounts(accounts); console.log(accounts); } } catch (err) { console.log(err) // do something like throw your error } fetchAccounts(); }, []); }
about 4 years ago · Juan Pablo Isaza Report

0

ya que la función de estado se ejecuta de forma asíncrona. por lo tanto, cuando usa setAccounts , establece la variable de accounts de manera asíncrona, por lo que hay una forma preferida de hacer esto como se muestra a continuación

problemas que he visto

1. El resultado de búsqueda debe desestructurarse con datos en lugar de variables de cuentas

2. La función setAccounts se está ejecutando de forma asíncrona, por lo que no imprimirá el resultado inmediatamente en la siguiente línea

 import { useEffect, useState } from "react"; export default function App() { const [accounts, setAccounts] = useState(); async function fetchAccounts() { const res = await fetch( "https://proton.api.atomicassets.io/atomicassets/v1/accounts" ); const { data } = await res.json(); setAccounts(data); } // on component mount / onload useState(() => { fetchAccounts(); }, []); // on accounts state change useEffect(() => { console.log(accounts); }, [accounts]); return <div className="blankElement">hello world</div>; }

ver aquí muestra

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!