5. Frontend Code Overview
src/index.js- Entry point of our appstatic/index.html- index.htmlsrc/routes.js- Contains route definitionsrc/App.js- Root component of our appsrc/klaytn/caver.js- Makes a connection with a Klaytn node
1) src/index.js:
src/index.js:import ReactDOM from 'react-dom'
import App from './App'
import renderRoutes from './routes'
import './index.scss'
// Render App(root component).
ReactDOM.render(
renderRoutes(App),
document.getElementById('root')
)
// hot module replacement.
if (module.hot) {
module.hot.accept('./App.js', () => {
const NextApp = require('./App').default
ReactDOM.render(renderRoutes(NextApp), document.getElementById('root'))
console.log('Hot module replaced..')
})
}'index.js' is main javascript file for our tutorial app. It is the entry point of our app.
It uses 'react-dom' library to render a React element into the DOM in the supplied container('#root') and return a reference to the component. In short, through 'react-dom' our tutorial app's DOM will be populated to <div id="root"></div> in public/index.html file.
2) static/index.html:
static/index.html:index.html is a HTML file for rendering our tutorial app.
For further information, visit React official site https://reactjs.org/docs/react-dom.html#render
3) src/routes.js:
src/routes.js:'routes.js' contains the route definition for our tutorial app.
As a root component, 'App.js' component renders child components defined in 'route.js' file.
By above code, 'Count' component would be rendered as a children of rootComponent when browser's URL path is "/".
For further information, visit React router github https://github.com/ReactTraining/react-router/blob/v3.2.1/docs/API.md
4) src/App.js:
src/App.js:'App.js' is the root component of our tutorial app.
It renders BlockNumber, Auth and {this.props.children} component.
{this.props.children} will be populated according to routes.js file.
If your browser's url path is /, it will render <Count /> component.
componentWillMount checks if there is a walletInstance session in the browser's sessionStorage.
walletInstance session may not exist if you have never logged in our tutorial app.
Otherwise, walletInstance session will exist as a JSON string, if so, it attempts to add the wallet instance to the caver's wallet.
You can add a wallet instance to caver through cav.klay.accounts.wallet.add(JSON.parse(walletFromSession)).
For further information related caver.klay.accounts.wallet.add, see caver.klay.accounts.wallet.add
cf) JSON.parse is needed since walletInstance session is stored as a JSON string.
5) src/klaytn/caver.js:
src/klaytn/caver.js:caver-js library makes a connection to a Klaytn node.
After the connection is made, you can get the current block number from the node and invoke contract methods.
You can connect to a specific Klaytn node by specifying it in the 'rpcURL'.
If you are running a Klaytn full node, you can set rpcURL to your node's URL.
for example,
rpcURL: 'http://localhost:8551'
Last updated