Reagieren: Zustände nach MetaMask-Transaktion neu rendern

Das React-Frontend meiner Dapp ruft die Daten erfolgreich von der privaten Blockchain (Ganache) ab und aktualisiert die Zustände entsprechend.

Wenn ich jedoch eine Funktion onClickauslöse, die die Zustände aktualisiert, rendern die Zustände die richtigen Werte nur, wenn ich die Seite aktualisiere.

Was ist der effektivste Weg, um die Zustände nach einer MetaMask-Transaktion zu aktualisieren?

UPDATE: Ich dachte, dass es vielleicht eine Möglichkeit geben könnte, die Seite über Web3js zu aktualisieren und diesen Teil in die Promise-Funktion einzufügen?

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

Antworten (1)

Aktualisieren Sie die Seite im Browser (F5)?

Wenn nicht, versuchen Sie es zuerst.

Sie können Ihr Dapp auch so programmieren, dass es die Anzeige aktualisiert, wenn es eine abgeschlossene Transaktionsquittung erhält oder ein Ereignis empfängt, dass das DApp-Display abonniert ist, das von Ihrem Smart Contract in der Transaktion ausgegeben wird.


Möglicherweise müssen Sie die Netzwerkauswahl von MetaMask (oben links im MetaMask-Popup) verwenden, um zu einem anderen Netzwerk zu wechseln (z. B. Localhost 8545) und dann zurück zu Ihrem benutzerdefinierten Ganache-Netzwerk wechseln, um den Cache zu löschen.

Dies wird nicht durch die Schaltfläche „Konto zurücksetzen“ unten im Einstellungsmenü abgedeckt, das über das dreizeilige Menü oben rechts zugänglich ist.

Dies ist ein Fehler in MetaMask.

Danke für die Antwort. Ja, ich habe erwähnt, dass das Aktualisieren nicht funktioniert. Ich bin auf localhost 7545 und die Dapp interagiert erfolgreich mit Ganache, indem sie Transaktionen sendet. Mein Problem ist, dass ich möchte, dass die dapp die Zustände der Variablen aktualisiert, sobald die Transaktion abgeschlossen ist. Im Moment kann ich das nur tun, indem ich das MetaMask-Konto ändere. Könnten Sie bitte mehr Licht auf einen Mechanismus zum Abhören einer Transaktionsbestätigung in React werfen?
Sie können web3 verwenden, um auf Vertragsereignisse zu lauschen . Ihr Click-Handler kann einen zusätzlichen Satz von .call()-Aktionen ausführen, um neue Werte abzurufen und sie mit normalem Javascript anzuzeigen. Wenn jedoch die von Fehlern betroffene Metamask eine zwischengespeicherte Version der Blockchain widerspiegelt, erhalten Sie Ereignisse aus der zwischengespeicherten Kette anstelle der zurückgesetzten Live-Kette, bis Sie das Netzwerk weg- und zurückschalten ODER die neue Kette länger als die zwischengespeicherte ist.