5. Frontend Code Overview

  1. src/index.js - Entry point of our app

  2. static/index.html - index.html

  3. src/routes.js - Contains route definition

  4. src/App.js - Root component of our app

  5. src/klaytn/caver.js - Makes a connection with a Klaytn node

1) 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:

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:

'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:

'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:

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