Web3js

如何將 web3 映射到 react.js 狀態

  • June 7, 2017

你如何將一個變化的變數從 web3 映射到 react.js 組件?例子:

類應用擴展組件{
建構子(道具){
超級(道具);
這個.state = {
區塊編號:web3.eth.blockNumber,
}
}

使成為() {
返回(
{this.state.blockNumber}
)
}
}

不使用setTimeout//的最佳實踐是requestAnimationFrame什麼setInterval

我通過執行以下操作弄清楚了:

const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
const abi = [{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"應付":false,"type":"function"},{"payable":false,"type":"fallback"}];
常量地址=“0x3E2A850420e024d2f269d45F85a24Dc6F586277D”;
const deployContract = web3.eth.contract(abi).at(address);
const filter = web3.eth.filter('latest');

類應用擴展組件{
建構子(道具){
超級(道具);
這個.state = {
區塊編號:web3.eth.blockNumber,
...已部署契約
}
}
組件DidMount(){
filter.watch((錯誤,結果) =>{
常量塊 = web3.eth.getBlock(result, true);
this.setState({blockNumber: block.number});
});
}

這樣,每次當你有一個新塊時,你的 react 組件都會重新渲染自己,所以你總是會從你的合約中獲得新的值。

引用自:https://ethereum.stackexchange.com/questions/17377