Wie kann ich in einer Drizzle-Dapp auf die Adresse eines Vertrags zugreifen?

Ich habe begonnen, von der Drizzle-Box aus zu arbeiten und kann auf Funktionen innerhalb von Verträgen zugreifen, aber wenn ich einer Vertragsadresse eine Genehmigung erteilen möchte, damit sie Benutzer-Token verwenden kann, wie kann ich die richtige Adresse angeben? drizzleOptions enthält Verträge mit Adressen pro Netzwerk, aber ich glaube nicht, dass ich ohne eine web3-Instanz herausfinden kann, welches Netzwerk aktuell ist. Es muss jedoch eine einfache Möglichkeit geben, die Adresse eines Vertrags im aktuellen Netzwerk zu erhalten?

Antworten (2)

Sie müssen auf das Drizzle-Kontextobjekt in der React-Komponente zugreifen. Ich nehme an, Sie arbeiten an der Komponente „Home.js“.

Zum Beispiel:

this.drizzle = context.drizzle

im Konstruktor der Komponente und siehe https://github.com/trufflesuite/drizzle-react/issues/22 ,

Sobald das funktioniert,

this.drizzle.contracts.TutorialToken.addressoder gleichwertig

context.drizzle.contracts.TutorialToken.addresssollte die adresse des netzwerks zurückgeben, da ich aber kein reaktivexperte bin, gibt es vielleicht einen besseren ansatz.

Die Adresse ist Teil der Vertrags-API, die zusammen mit der Drizzle-Option geladen wird

Also, wenn Sie gerade console.log(drizzle)da sind, ist die Lösung. Sie können die Adresse direkt in Ihrem Chrom-Browser anzeigen, wenn Sie die Dev-Tools -> Konsole öffnen

Nehmen wir also an, Ihr Kontaktname ist SimpleToken

drizzle.contracts.SimpleToken.address enthält die Vertragsadresse

Stellen Sie vor der Verwendung sicher, dass drizzle.contracts.SimpleToken.address synchronisiert ist. Andernfalls erhalten Sie einen undefinierten Rückgabewert oder einen fetten roten Fehler auf Ihrer Chrome-Konsole.

Hoffe das hilft