Wie würden Sie eine sich ändernde Variable von web3 auf die Komponente „react.js“ abbilden? Beispiel:
Klasse App erweitert Komponente { Konstruktor (Requisiten) { Super (Requisiten); this.state = { Blocknummer: web3.eth.blockNummer, } } rendern() { zurückkehren( {this.state.blockNumber} ) } }
Was wäre die beste Vorgehensweise ohne die Verwendung von setTimeout
/ requestAnimationFrame
/setInterval
Ich habe es herausgefunden, indem ich Folgendes getan habe:
const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); const abi = [{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}]," payable":false,"type":"function"},{"payable":false,"type":"fallback"}]; konstante Adresse = "0x3E2A850420e024d2f269d45F85a24Dc6F586277D"; const deployedContract = web3.eth.contract(abi).at(Adresse); const filter = web3.eth.filter('latest'); Klasse App erweitert Komponente { Konstruktor (Requisiten) { Super (Requisiten); this.state = { Blocknummer: web3.eth.blockNummer, ...eingesetztVertrag } } KomponenteDidMount(){ filter.watch((Fehler, Ergebnis) =>{ const block = web3.eth.getBlock (Ergebnis, wahr); this.setState({blockNumber: block.number}); }); }
Auf diese Weise wird sich Ihre Reaktionskomponente jedes Mal neu rendern, wenn Sie einen neuen Block haben, sodass Sie immer neue Werte aus Ihrem Vertrag erhalten.
por
web3.eth.filter
durch ` web3js.readthedocs.io/en/1.0/web3-eth-subscribe.html ersetztrstormsf