如果你在区块链的世界里混过一段时间,肯定听说过MetaMask。它是一款非常流行的加密钱包,支持以太坊及其所有ERC20代币。对于开发者来说,MetaMask不仅仅是个钱包,它还是连接用户与区块链的桥梁。用户可以通过MetaMask直接与DApp互动,签署交易,非常方便。
在DApp开发过程中,监听MetaMask的状态是相当重要的。这不仅可以帮助你了解用户是否已连接到钱包,还可以监控账户变化、网络变化等信息。如果不及时响应这些变化,用户在使用你的应用时可能会遇到各种麻烦,最坏的情况就是交易失败,用户体验差。所以,做好这一步,能让你的DApp更加友好
首先,你需要在你的DApp项目中引入web3.js或者ethers.js。个人比较推荐ethers.js,因为它更轻便,语法也更简洁。下面,我会以ethers.js为例,给大家讲讲怎么监听MetaMask的状态。
首先确保你已连接到以太坊网络:
const { ethers } = require("ethers");
const provider = new ethers.providers.Web3Provider(window.ethereum);
在这之后,你可以通过以下代码请求用户连接钱包:
async function connectWallet() {
try {
await window.ethereum.request({ method: 'eth_requestAccounts' });
console.log("Wallet connected!");
} catch (error) {
console.error("Error connecting to wallet:", error);
}
}
关注用户账户变化很重要,下面这段代码可以监听用户换账户或者断开连接的情况:
window.ethereum.on('accountsChanged', (accounts) =