nuxt 2 接入web3modal 登陆

1.0 版本

<template>
  <div>
     <button @click="login">Login</button>
    <button @click="initWeb3Modal">logoout</button>

  </div>
</template>

<script>
import Web3Modal from 'web3modal'
import Web3 from 'web3'

export default {
  data() {
    return {
      web3: null,
      connected: false,
      address: '',
      web3Modal: null
    }
  },
  mounted() {
    this.initWeb3Modal()
  },
  methods: {
    async initWeb3Modal() {
      this.web3Modal = new Web3Modal({
        cacheProvider: true, // 是否缓存提供商信息
        disableInjectedProvider: false, // 是否禁用浏览器上已注入的提供商(例如 MetaMask)
        fullScreen: false, // 是否使用全屏模式显示 Web3Modal 登录框
        network: 'mainnet', // 连接的区块链网络(例如 mainnet,rinkeby,ropsten)
        theme: 'light', // 选择 Web3Modal 登录框的主题,可选值有“light”(浅色主题)和“dark”(深色主题)
      })
      const provider = await this.web3Modal.connect()
      this.web3 = new Web3(provider)
      this.getCurrentAccount()
    },
    async getCurrentAccount() {
      const accounts = await this.web3.eth.getAccounts()
      console.log('accounts', accounts)
      return accounts[0]
    },
    async login() {
      const provider = await this.web3Modal.connect()
      this.web3 = new Web3(provider)
      this.getCurrentAccount()
    },
    }
  }
}
</script>

可以直接拿去用,亲测有效

2.0版本

<template>
  <div>
     <client-only>
      <w3m-core-button
      icon="false"
      label=""

      />
      <button @click="sign">
        Sign
      </button>
    </client-only> 
 <button @click="logoout">退出</button>
  </div>
</template>

<script>
import Vue from 'vue'
import {
  configureChains,
  createClient,
  getAccount,
  signMessage,
  disconnect
} from '@wagmi/core'
import { goerli, mainnet } from '@wagmi/core/chains'
import {
  EthereumClient,
  modalConnectors,
  walletConnectProvider
} from '@web3modal/ethereum'
import { Web3Modal } from '@web3modal/html'
// import { WalletConnectConnector } from '@wagmi/core/connectors/walletConnect'

Vue.config.ignoredElements = ['w3m-core-button']

export default {
  name: 'IndexPage',
  data() {
    return {
      web3Modal: null
    }
  },
  mounted() {
    // define constants
    const projectId = '***'
    const chains = [mainnet]

    // configure wagmi client
    const { provider } = configureChains(chains, [
      walletConnectProvider({
        projectId
      })
    ])
    const wagmiClient = createClient({
      autoConnect: true,
      showQrModal: false,
      connectors: [...modalConnectors({ appName: 'web3Modal', chains })],
      provider
    })

    // create ethereum and modal clients
    const ethereumClient = new EthereumClient(wagmiClient, chains)
    const web3Modal = new Web3Modal(
      {
        projectId,
        themeZIndex: '9999',
        // termsOfServiceUrl: " ",
        enableAccountView: false
      },

      ethereumClient
    )

    web3Modal.subscribeModal(({ open }) => {
      const account = getAccount()
      console.log(account)
    })
    this.web3Modal = web3Modal
    console.log('web3Modal', web3Modal)
  },
  methods: {
    initWeb3Modal() {
      this.web3Modal.openModal()
    },
    async logoout() {
      await disconnect()

      const account = getAccount()
      console.log(account)
    },

    async sign() {
      const signature = await signMessage({
        message: 'Hello, World!'
      })
      console.log(signature)
    }
  }
}
</script>

nuxt 需要配置一下
在这里插入图片描述

 transpile: ['@web3modal', '@walletconnect', '@wagmi',/^element-ui/],

package"@wagmi/core": "^0.9.5",
    "@web3modal/ethereum": "^2.1.1",
    "@web3modal/html": "^2.1.1",

也可以直接使用,完事

寻找web3 远程工作就来
https://www.bolejobs.co/
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值