Wagmi 提供了丰富的 React 钩子(Hooks),覆盖区块链开发的核心场景(账户管理、交易处理、合约交互、网络操作等)。 Link to heading

一、账户与连接(Account & Connect) Link to heading

用于管理钱包连接状态、账户信息及连接生命周期。

钩子名称 核心功能
useAccount 获取当前连接的钱包账户信息(地址、连接状态、网络 ID 等)
useConnect 管理钱包连接逻辑(获取可用钱包列表、触发连接、处理连接状态)
useDisconnect 断开当前已连接的钱包
useEnsAvatar 获取 ENS 域名对应的头像 URL
useEnsName 将钱包地址解析为 ENS 域名(如 vitalik.eth
useProvider 获取当前连接钱包的 JSON-RPC Provider(用于直接与区块链交互)
useSignMessage 让钱包签名消息(用于身份验证等场景)
useSignTypedData 让钱包签名结构化数据(符合 EIP-712 标准,用于更复杂的身份验证)
useWalletClient 获取当前连接钱包的客户端实例(用于发起交易、签名等操作)

二、交易处理(Transactions) Link to heading

用于发送交易、跟踪交易状态及估算 gas。

钩子名称 核心功能
useSendTransaction 发送原生代币转账交易(如 ETH 转账)
useWaitForTransactionReceipt 跟踪交易确认状态,获取交易收据(包含状态、区块号、gas 用量等)
useEstimateGas 估算交易或合约调用所需的 gas 数量
useFeeData 获取当前网络的 gas 费用数据(基础费、优先费等)
useTransaction 根据交易哈希查询交易详情
useTransactionReceipt 根据交易哈希查询交易收据(已确认的交易)

三、合约交互(Contracts) Link to heading

用于与智能合约交互(读取数据、写入状态)。

钩子名称 核心功能
useReadContract 调用合约的只读方法(无需消耗 gas,如查询余额、代币信息)
useWriteContract 调用合约的写入方法(修改区块链状态,消耗 gas,如转账代币、铸造 NFT)
useContractEvent 监听合约事件(如 ERC20 的 Transfer 事件、NFT 的 Mint 事件)
usePrepareContractWrite 预计算合约写入交易的参数(如 gas 估算、签名者信息),优化用户体验

四、网络与区块(Network & Blocks) Link to heading

用于管理区块链网络、区块信息及网络切换。

钩子名称 核心功能
useChainId 获取当前连接的区块链网络 ID(如 1 对应以太坊主网,5 对应 Goerli 测试网)
useChains 获取配置的所有区块链网络信息
useSwitchChain 切换钱包连接的区块链网络(需钱包支持该网络)
useBlockNumber 获取当前区块链的最新区块号
useBlock 获取指定区块的详细信息(需传入区块号或标签,如 'latest'
usePublicClient 获取指定网络的公共 JSON-RPC 客户端(无需钱包连接,用于只读操作)
useWebSocketPublicClient 获取指定网络的 WebSocket 客户端(用于监听实时区块、事件等)

五、余额与资产(Balances & Assets) Link to heading

用于查询账户余额及资产信息。

钩子名称 核心功能
useBalance 查询指定地址的原生代币余额(如 ETH 余额)
useToken 查询 ERC20 代币的元数据(名称、符号、小数位等)
useTokenBalance 查询指定地址的 ERC20 代币余额
useTokens 批量查询多个 ERC20 代币的元数据

六、其他工具类钩子 Link to heading

钩子名称 核心功能
use wagmi 获取 Wagmi 配置信息及内部状态
useMutation 自定义区块链相关的异步操作(基于 React Query,用于扩展自定义逻辑)
useQuery 自定义区块链数据查询(基于 React Query,用于扩展只读操作)

核心特点总结 Link to heading

  • 所有钩子均基于 React Query 实现,内置缓存、重试、状态管理(加载 / 成功 / 错误)。
  • 统一适配多种钱包(MetaMask、WalletConnect 等),无需关注底层差异。
  • 按功能模块化,覆盖 DApp 开发全流程(从连接钱包到合约交互)。