You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WalletConnect与Wagmi时刷新页面会话丢失问题求助

问题

我尝试在我的dApp中添加“Connect Wallet”按钮,采用WalletConnect的Web3Modal与Wagmi实现,但刷新页面后会话会断开,需要重新登录。查看Web3Modal官方示例时,钱包在刷新后仍能保持连接。以下是我的代码:

import { configureChains, createClient, connect } from '@wagmi/core'
import { mainnet, polygon } from '@wagmi/core/chains'
import { EthereumClient, modalConnectors, walletConnectProvider } from '@web3modal/ethereum'
import { Web3Modal } from '@web3modal/html'

const projectId = '*69c...426*'
const chains = [mainnet, polygon]

const { provider } = configureChains(chains, [walletConnectProvider({ projectId })])
const wagmiClient = createClient({
  autoConnect: true,
  connectors: modalConnectors({ appName: "web3Modal", chains: chains, version: "2", projectId: projectId }),
  provider
})
const ethereumClient = new EthereumClient(wagmiClient, chains)
const web3Modal = new Web3Modal({ projectId }, ethereumClient);

请问我遗漏了什么配置?

解决方案

问题核心是会话未被持久化存储,虽然设置了autoConnect: true,但Wagmi默认没有配置存储适配器保存连接状态,导致刷新后丢失会话。以下是修复步骤:

  • 添加Wagmi存储适配器
    Wagmi需要存储机制(比如localStorage)来保存连接会话,从@wagmi/core导入createStorage并配置到客户端:
import { configureChains, createClient, createStorage } from '@wagmi/core'
// ... 其他导入代码

// 创建本地存储适配器
const storage = createStorage({
  storage: window.localStorage,
})

const wagmiClient = createClient({
  autoConnect: true,
  connectors: modalConnectors({ appName: "web3Modal", chains, version: "2", projectId }),
  provider,
  storage // 新增存储配置
})
  • 开启Web3Modal会话缓存
    初始化Web3Modal时显式开启缓存,确保WalletConnect会话持久化:
const web3Modal = new Web3Modal({
  projectId,
  cacheProvider: true // 开启缓存,默认可能为false
}, ethereumClient);
  • 验证基础配置完整性
    确认modalConnectors的chains、projectId参数传递无误,同时替换示例中的*69c...426*为真实有效的WalletConnect Project ID。

完成以上配置后,刷新页面时Wagmi会自动从localStorage读取连接状态,Web3Modal也会恢复WalletConnect会话,无需重新登录。

内容的提问来源于stack exchange,提问作者zackwbishop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:55:22