Reaccionar: volver a renderizar los estados después de la transacción de MetaMask

La interfaz React de mi dapp obtiene con éxito los datos de la cadena de bloques privada (Ganache) y actualiza los estados en consecuencia.

Sin embargo, cuando activo una función onClickque actualiza los estados, los estados representan los valores adecuados solo cuando actualizo la página.

¿Cuál es la forma más efectiva de actualizar los estados después de una transacción de MetaMask?

ACTUALIZACIÓN: Estaba pensando que tal vez podría haber alguna forma de actualizar la página a través de Web3js y agregar esa parte a la función de promesa.

IE onClick -> func1.then () -> actualizar

Respuestas (1)

¿Está actualizando la página en el navegador (F5)?

Si no, prueba eso primero.

También puede programar su dapp para actualizar la pantalla cuando recibe un recibo de transacción completado o recibe un evento al que está suscrita la pantalla dapp, que es emitido por su contrato inteligente en la transacción.


Es posible que deba usar el selector de red de MetaMask (en la parte superior izquierda de la ventana emergente de MetaMask) para cambiar a una red diferente (por ejemplo, Localhost 8545) y luego volver a su red Ganache personalizada para borrar el caché.

Esto no está cubierto por el botón "Restablecer cuenta" en la parte inferior del menú Configuración accesible a través del menú de tres líneas en la parte superior derecha.

Este es un error en MetaMask.

Gracias por la respuesta. Sí, he mencionado que la actualización no funciona. Estoy en localhost 7545, y el dapp interactúa con éxito con Ganache mediante el envío de transacciones. Mi problema es que me gustaría que el dapp actualice los estados de las variables una vez que se complete la transacción. En este momento, solo puedo hacer eso cambiando la cuenta de MetaMask. ¿Podría difundir más información sobre un mecanismo para escuchar un recibo de transacción dentro de React?
Puede usar web3 para escuchar eventos de contrato . Su controlador de clics puede realizar un conjunto adicional de acciones .call() para obtener nuevos valores y mostrarlos con Javascript normal. Sin embargo, si Metamask afectado por errores refleja una versión almacenada en caché de la cadena de bloques, obtendrá eventos de la cadena almacenada en caché en lugar del restablecimiento en vivo hasta que cambie las redes y regrese O la nueva cadena sea más larga que la almacenada en caché.