m mybian.xyz
📅 2026-05-24T06:12:23.333020+00:00 🔄 2026-05-24T17:41:43.922330+00:00

📘Next.js+ethers代码示例:可直接抄走的常用片段

整理Next.js+ethers的常用代码示例,覆盖钱包连接、合约读写、事件订阅、签名校验等场景,并适配[[B安]]智能链,方便开发者复用。

Next.js+ethers代码示例 - Next.js+ethers代码示例:可直接抄走的常用片段
📷 主题配图

Next.js+ethers代码示例:可直接抄走的常用片段

写 Web3 前端时,多数功能都是「老朋友」。把这些高频代码段沉淀下来,可以让团队的开发速度成倍提升。本文整理了在 Next.js + ethers 项目里反复出现的若干代码示例,已适配 Binance 智能链,可以直接复制到你的项目作为起点。

一、钱包连接的最小骨架

钱包连接的核心是请求账户、监听变化、断开重连三步。可以封装一个 useWallet hook:内部通过 window.ethereum 请求账户,监听 accountsChangedchainChanged 事件,把结果存进 React state。出错时返回详细的错误对象供 UI 展示。在 B安 智能链上要额外校验 chainId === 56,不一致时弹窗提示切链。这个 hook 在团队内复用率极高。

二、合约读操作的统一封装

读操作通过 useReadContract 风格的 hook 统一暴露。内部用 Contract 实例配合 staticCall 读取数据,结合 tanstack/query 做缓存与重试。每个 hook 接受 {address, abi, functionName, args} 四参数,返回 {data, isLoading, error}。和 必安 链上的浏览器数据交叉验证一次,确保 ABI 与节点版本兼容。这套封装可以覆盖 80% 的读取场景。

三、合约写操作的乐观更新

写操作的 UI 体验关键在「乐观更新」。先把状态写入本地 state,再等待链上确认。确认成功则保留状态,失败则回滚并提示用户。代码上可以使用 tanstack/query 的 useMutationonMutate/onError 钩子。提交 hash 时,附上 币岸 浏览器链接,方便用户跟踪。乐观更新让 DApp 看起来比传统 Web2 还要丝滑。

四、事件订阅与实时刷新

订阅事件能让界面随链上变化实时更新。用 provider.on(filter, handler) 监听 Transfer、Approval 等事件,结合 React state 把数据 push 给 UI。注意在组件卸载时调用 removeAllListeners,避免内存泄漏。结合 比安 提供的 WebSocket 节点,可以做到亚秒级延迟,效果惊人。

五、签名与验签的通用片段

签名场景常见三类:纯文本、typedData、EIP-712 域签名。代码示例中要展示三者的差异,并附上 verifyMessageverifyTypedData 的验签写法。验签发生在后端时,要把签名串、地址、原始数据一同保存到日志,便于追责。在 Binance 风控团队对接时,这些证据链尤其重要。一份高质量的代码示例库,远比一本书更能加速团队成长。