Как бы вы сопоставили изменяющуюся переменную из web3 с компонентом react.js? Пример:
приложение класса расширяет компонент { конструктор (реквизит) { супер (реквизит); это.состояние = { номер блока: web3.eth.blockNumber, } } оказывать() { возвращаться( {это.состояние.номерблока} ) } }
Что было бы наилучшей практикой без использования setTimeout
//requestAnimationFrame
setInterval
Я понял это, выполнив следующие действия:
const web3 = новый Web3(новый Web3.providers.HttpProvider("http://localhost:8545")); const abi = [{"константа":истина,"входы":[],"имя":"владелец","выходы":[{"имя":"","тип":"адрес"}]," подлежащий выплате: false, "тип": "функция"}, {"оплачиваемый": false, "тип": "запасной вариант"}]; постоянный адрес = "0x3E2A850420e024d2f269d45F85a24Dc6F586277D"; const deployedContract = web3.eth.contract(abi).at(адрес); константный фильтр = web3.eth.filter('последний'); приложение класса расширяет компонент { конструктор (реквизит) { супер (реквизит); это.состояние = { номер блока: web3.eth.blockNumber, ... развернутый контракт } } компонентDidMount () { filter.watch((ошибка, результат) =>{ const block = web3.eth.getBlock(result, true); this.setState({blockNumber: block.number}); }); }
таким образом, каждый раз, когда у вас будет новый блок, ваш компонент реакции будет повторно отображать себя, поэтому вы всегда будете получать новые значения из своего контракта.
порты
web3.eth.filter
заменено на ` web3js.readthedocs.io/en/1.0/web3-eth-subscribe.html .рстормсф