跳到主要内容

最佳实践

下面这些规则可以帮助 DApp 在多钱包环境下更稳定地连接 UKey Wallet,并在用户拒绝、切换网络或断开连接时保持界面可恢复。

1. 优先使用 EIP-6963

不要把 window.ethereum 当作唯一入口。EIP-6963 可以发现同一浏览器中的多个钱包,让用户明确选择 UKey Wallet,避免请求被其他钱包接管。

2. 正常处理用户拒绝

拒绝连接、拒绝签名和取消交易都属于正常用户行为。应用应保留当前页面状态,显示可理解的提示,并允许用户重新发起操作。

try {
await provider.request({ method: 'eth_requestAccounts' });
} catch (err) {
if (err.code === 4001) {
// EIP-1193 规范里的“用户拒绝请求”错误
console.log('请连接钱包以继续。');
} else {
console.error('Caught provider error:', err);
}
}

3. 及时响应网络变更

用户可能在钱包中切换网络。收到 chainChanged 后,应刷新链相关状态;如果应用状态较复杂,刷新页面通常是最稳妥的处理方式。

4. 避免轮询

不要用 setInterval 反复读取账户或链信息。优先监听 accountsChangedchainChanged 等事件,再按需触发状态刷新。