Web3js
如何將 web3 映射到 react.js 狀態
你如何將一個變化的變數從 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 組件都會重新渲染自己,所以你總是會從你的合約中獲得新的值。