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

279
Views
¿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 answers
Answer question

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 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!