Cómo mapear un web3 a un estado de react.js

¿Cómo asignaría una variable cambiante de web3 al componente react.js? Ejemplo:

La aplicación de clase extiende el componente {
  constructor (accesorios){
    súper (accesorios);
    este.estado = {
      número de bloque: web3.eth. número de bloque,
    }
  }

  prestar() {
    devolver(
      {this.state.blockNumber}
    )
  }
}

¿Cuál sería la mejor práctica sin usar setTimeout/ requestAnimationFrame/setInterval

Respuestas (1)

Lo descubrí haciendo lo siguiente:

const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
const abi = [{"constante":verdadero,"entradas":[],"nombre":"propietario","salidas":[{"nombre":"","tipo":"dirección"}]," pagadero":falso,"tipo":"función"},{"pagadero":falso,"tipo":"alternativo"}];
dirección constante = "0x3E2A850420e024d2f269d45F85a24Dc6F586277D";
const deploymentContract = web3.eth.contract(abi).at(dirección);
filtro const = web3.eth.filter('último');

La aplicación de clase extiende el componente {
  constructor (accesorios){
    súper (accesorios);
    este.estado = {
      número de bloque: web3.eth. número de bloque,
      ...contrato implementado
    }
  }
  componenteHizoMontar(){
    filter.watch((error, resultado) =>{
      bloque const = web3.eth.getBlock(resultado, verdadero);
      this.setState({blockNumber: block.number});
    });
  }

de esa manera, cada vez que tenga un bloque nuevo, su componente de reacción se volverá a renderizar, por lo que siempre obtendrá nuevos valores de su contrato.

FYI web3.eth.filterse reemplaza por ` web3js.readthedocs.io/en/1.0/web3-eth-subscribe.html en web3 1.0
suscribirse solo funciona para conexiones websocket