React + Web3.js + Bootstrap으로 연결 지갑 버튼 만들기

사용자가 앱에서 지갑을 연결할 수 있도록 MetaMask와 상호 작용하는 버튼을 만드는 방법을 알려드리겠습니다.
npx create-react-app wallet-connect
cd wallet-connect

package.json에서 react-scripts 버전을 확인하십시오. web3.js와 호환되려면 버전이 4.0.3이어야 합니다.

이 명령줄을 실행하여 필요한 모든 것을 설치합니다.yarn add web3 react-bootstrap bootstrap react-bootstrap-icons
index.js에 다음 줄을 추가합니다.

import 'bootstrap/dist/css/bootstrap.css';


최종 App.js 파일:

import React from 'react';
import Web3 from "web3";
import { Button } from 'react-bootstrap';
import { Wallet } from 'react-bootstrap-icons';
import './App.css';

class App extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      web3: null,
      currentAccount: null,
      ethBalance: 0,
      networkId: null
    };
  }

  componentDidMount = async () => {
    this.connectWalletHandler();
  };

  connectWalletHandler = async () => {
    try {
      const web3 = new Web3(Web3.givenProvider);
      this.setState({ web3: web3});
      const accounts = await web3.eth.requestAccounts();
      if (accounts.length !== 0) {
        const networkId = await web3.eth.net.getId();
        const ethBalance = await web3.eth.getBalance(accounts[0]);
        this.setState({currentAccount: accounts[0], ethBalance: Web3.utils.fromWei(ethBalance), networkId: networkId});
      } 
    } catch (error) {
      console.error(error);
    }
  }

  connectedWallet = () => {
    return (
      <div>
        <p>{parseFloat(this.state.ethBalance).toFixed(4)} ETH</p>
        <p>{this.state.currentAccount.slice(0,5)+'...'+this.state.currentAccount.slice(38,42)}<br />WALLET CONNECTED</p>
      </div>
    )
  }

  connectWalletButton = () => {
    return (
      <Button variant="outline-primary" onClick={() => this.connectWalletHandler()}><Wallet />&ensp;Connect wallet</Button>
    )
  }

  render() {
    return (
      <div className="App">
         {this.state.currentAccount ? this.connectedWallet() : this.connectWalletButton()}
      </div>
    );
  }
}

export default App;

좋은 웹페이지 즐겨찾기