Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

288
Vistas
¿Cómo obtengo el saldo del contrato con useEffect?

Situación

Creé un contrato inteligente e importé el abi y la dirección del contrato en mi aplicación de reacción.

He accedido con éxito a los métodos y opciones dentro de mi aplicación de reacción. Usé useEffect sin problemas.

Problema

Sin embargo, estoy luchando por conseguir el saldo del contrato. He intentado todo lo que entiendo sin resultado.

Este código funciona bien

 import web3 from "./web"; import { useState, useEffect } from "react"; import Lottery from "./Lottery"; const [isManager, setManager] = useState( "<em>Loading manager address...</em>" ); useEffect(() => { const getManager = async () => { const mangWallet = await Lottery.methods.manager().call(); console.log(mangWallet); setManager(mangWallet); }; getManager(); }, []);

Esto NO funciona: el saldo sigue siendo 0. Más importante aún, el registro de la consola ni siquiera muestra 0. ¿Es como si toda la función getBalance no se estuviera ejecutando?

 const [balance, setBalance] = useState(0); useEffect(() => { const getBalance = async () => { const contBal = await web3.eth.getBalance(Lottery.contract_address); setBalance(contBal); console.log(balance); }; getBalance(); }, []);

Algunas cosas a tener en cuenta:

  • contract_address contiene la dirección del contrato inteligente en la cadena, almacenada en el archivo Lottery.js
  • estos dos fragmentos de código están en un archivo: app.js Lo que significa que hay dos funciones useEffect .
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No estoy seguro de cuál es tu problema. Pero creo que esto async const contBal = await web3.eth.getBalance(Lottery.contract_address); puede lanzar una excepción. Así que creo que necesitas agregar try catch así:

 const [balance, setBalance] = useState(0); useEffect(() => { const getBalance = async () => { try { const contBal = await web3.eth.getBalance(Lottery.contract_address); setBalance(contBal); console.log(balance); } catch(error) { console.log(error); } }; getBalance(); }, []);

Acerca de console.log(balance) , siempre registra 0. Porque es el comportamiento de useEffect . Por lo tanto, debe crear otro useEffect si desea ver el cambio del valor del balance de esta manera:

 useEffect(() => { console.log(balance) }, [balance])
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda