已实现钱包连接函数,请求开发账户断开连接功能及调用按钮
实现钱包断开连接功能
针对你现有的连接钱包逻辑,以下是实现断开钱包功能的方案:
首先编写断开钱包的函数:
const disconnectWallet = async () => { if (window.ethereum) { try { // 调用MetaMask的断开连接方法(需确保钱包版本较新) await window.ethereum.request({ method: 'wallet_disconnect' }); // 重置前端所有相关状态 setAddress(''); setWeb3(null); setVmContract(null); setError(''); } catch (err) { // 若钱包不支持断开方法,直接重置前端状态即可 setAddress(''); setWeb3(null); setVmContract(null); setError('断开失败:' + err.message); } } else { alert('请安装MetaMask扩展!'); } };
逻辑说明:
- 优先调用MetaMask官方支持的
wallet_disconnect方法,让钱包端同步断开状态 - 无论调用是否成功,都会重置前端存储的钱包地址、Web3实例、合约实例及错误信息,确保前端与钱包状态一致
- 捕获异常,兼容部分旧版本钱包不支持断开方法的情况
最后添加断开钱包按钮(以React为例):
<button onClick={disconnectWallet} disabled={!address}> 断开钱包 </button>
可通过address是否存在控制按钮禁用状态,避免未连接时的无效点击。
内容的提问来源于stack exchange,提问作者Saira Rao
相关产品推荐
相关产品推荐

