5-1. Blocknumber Component
BlockNumber component
BlockNumber component1) Full code
import React, { Component } from 'react'
import { cav } from 'klaytn/caver'
import './BlockNumber.scss'
/**
* BlockNumber component gets the current block number every 1 second.(1000ms)
* current block number can be fetched through caver-js library
* which make a connection, communicating with klaytn node.
* cf) If you want to connect to specific klaytn node,
* change 'rpcURL' config in klaytn/caver.js
*/
class BlockNumber extends Component {
/**
* BlockNumber component has a 'currentBlockNumber' state.
*/
state = {
currentBlockNumber: '...loading',
}
/**
* 'getBlockNumber' method works
* 1) get current block number from klaytn node by calling 'cav.klay.getBlockNumber()'
* 2) set 'currentBlockNumber' state to the value fetched from step 1).
*/
getBlockNumber = async () => {
const blockNumber = await cav.klay.getBlockNumber()
this.setState({ currentBlockNumber: blockNumber })
}
/**
* intervalId value will be populated by the value returned from `setInterval`.
* intervalId will be used to clear interval, preventing memory leak.
*/
intervalId = null
/**
* In 'componentDidMount' lifecycle, call 'getBlockNumber' method intervally.
*/
componentDidMount() {
this.intervalId = setInterval(this.getBlockNumber, 1000)
}
/**
* In 'componentWillUnmount' lifecycle, clear interval
* which calls getBlockNumber per 1000ms.
*/
componentWillUnmount() {
if (this.intervalId) clearInterval(this.intervalId)
}
/**
* In 'render' lifecycle, show 'currentBlockNumber' state like below:
* <p>Block No. {currentBlockNumber}</p>
*/
render() {
const { currentBlockNumber } = this.state
return (
<div className="BlockNumber">
<p className="BlockNumber__current">Block No. {currentBlockNumber}</p>
</div>
)
}
}
export default BlockNumber2) BlockNumber component's role
3) getBlockNumber method in detail
getBlockNumber method in detail4) Call getBlockNumber intervally
getBlockNumber intervallyLast updated