SEO教程

SEO教程

Products

当前位置:首页 > SEO教程 >

两天后,我掌握了wagmi v2多链钱包切换技巧。

96SEO 2026-08-03 02:08 2


背景

上个月接了一个 NFT 交易行业市场的活。需求很明确:使用者能连接钱包,在以太坊主网和 Polygon 之间切换,接下来浏览和购买不同链上的 NFT。老实说,项目用的是 Next.js + TypeScript。钱包接入我选了 wagmi v2,因为 v1 我用了大半年,觉得 API 挺顺手。话说回来,

但没想到。v1 到 v2 的升级比我预想的要“伤筋动骨”得多。我拿着 v1 的思维去写 v2 的代码,结果就是各种类型报错、链切换后状态不同步、签名消息在 Polygon 上直接失败。说起来,那两天我基本就是“写代码 → 报错 → 查文档 → 改代码 → 新报错”的死循环。

两天后我掌握了wagmi v2多链钱包切换技巧。

这篇文章就是把我这两天的排查过程完整记录下来特别是几个关键问题的解决思路和最终跑通的代码。说起来,如果你也在用 wagmi v2 做多链 DApp。希望我的踩坑记录能帮你省下至少一天时间。

问题分析

我最初的思路很简单:在 main.tsx 里配置好 http 的 transport,接下来每个页面组件里直接用 useAccountuseSwitchChain 这些 hooks。v1 里就是这么干的,所以我以为 v2 也差不多。

结果第一个报错就给我来了个下马威——TypeError: Cannot read properties of

I started with this incorrect snippet:

// ❌ 错误写法
import { createConfig } from 'wagmi'
import { mainnet。polygon } from 'wagmi/chains'

错误原因这方面,wagmi/chains 在 v2 已不存在要从 viem/chains 导入,而且 createConfig 要从 @wagmi/core 导入。

The second headache was chain switching. After using useSwitchChain,returned { chainId },although changed,didn’t trigger a refresh of NFT list on page because my useEffect had a wrong dependency array.

再看第一步先,正确配置多链

The solution is straightforward: configure wagmi like this:

// config/wagmi.ts
import { http。createConfig } from '@wagmi/core'
import { mainnet,polygon } from 'viem/chains'
import { metaMask } from 'wagmi/connectors'
export const wagmiConfig = createConfig({
说到chains,connectors:,transports: {
: http,: http,},})

说到坑点,'transports' keys 必须是数字 id 而不是字符串!否则 RPC 请求超时,

The root component needs both WagmiProvider and QueryClientProvider:

// app/providers.tsx
'use client'
import { WagmiProvider } from 'wagmi'
import { QueryClient,QueryClientProvider } from '@tanstack/react-query'
import { wagmiConfig } from '@/config/wagmi'
const queryClient = new QueryClient
export function Providers {
return (


{children}


)
}

接下来这方面,链切换与状态同步

The core logic lives in a custom hook that exposes a context for chain state:

// hooks/useActiveChain.ts
'use client'
import { useAccount,useSwitchChain } from 'wagmi'
import {
createContext。useContext,useEffect,useState,} from 'react'
interface ChainContextValue {
chainId: number | undefined
chainName: string
switchChain: => Promise
isSwitching: boolean
}
const ChainContext = createContext({
chainId: undefined,chainName: '',switchChain: async => {},})
export function ChainProvider {
const { chainId } = useAccount
const { switchChainAsync,isPending } = useSwitchChain
const = useState
// sync local state when wagmi updates its internal `chainId`
useEffect => {
if {
setActiveChainId
localStorage.setItem)
}
},)
const switchChain = async => {
try {
await switchChainAsync
} catch {
console.error
}
}
const chainName =
activeChainId === mainnet.id?'Ereum' :
activeChainId === polygon.id?不过,'Polygon' : 'Unknown'
return (

{children}

)
}
export const useActiveChain = => useContext

至于另一个坑。'switchChainAsync' 是异步函数,需要 await,否则不会真正切换。

:NFT 数据读取

NFT 列表使用合约调用,需要根据当前链地址动态决定:

// components/NFTList.tsx
'use client'
import { useReadContract } from 'wagmi'
import { useActiveChain } from '@/hooks/useActiveChain'
import nftABI from '@/contracts/nftABI'
const CONTRACT_ADDRESSES : Record ={
mainnet.id:'0xYourMainnetContract'。polygon.id:'0xYourPolygonContract',}
export function NFTList {
const{chainId}=useActiveChain
const contractAddress=chainId?
CONTRACT_ADDRESSES:undefined
const{data,totalSupply。error}=useReadContract({
address : contractAddress!abi:nftABI,functionName :'totalSupply',})
// 当链变更时强制 refetch
useEffect=>{refetch}。)
if return 
请先连接钱包
return (

当前链上有{totalSupply?.toString,?"..."} 个 NFT

{/* render list */}
) }

提醒这方面。如果把地址硬编码到某条链上,而当前为另一条,会导致 ContractFunctionExecutionError;记得动态读取地址,

从第四步来看,签名验证

NFT 出价需要 EIP‑712 签名。domain 中必须使用当前链 ID:


// utils/signBid.ts
import { useSignTypedData } from 'wagmi'
import { useActiveChain } from '@/hooks/useActiveChain'
export function useSignBid {
const{chainId}=useActiveChain
const{signTypedDataAsync}=useSignTypedData
async function signBid{
const domain={
从name来看,'NFTMarketplace',version:'',chainID : chainID!,// 必须动态获取,verifyingContract:'0xYourMarketplaceContract',}
const types={
Bid的观点是,}
const message={
nftID,price,nonce,}
return await signTypedDataAsync({
domain,types,primaryType:'Bid',message。})
}
return{signBid}
}

"域中的 chainID 写死导致后端验签失效".

完整代码示例

  • /app/providers.tsx – 上面已展示过;请确保在 layout 引入 Providers 包装整个应用。
  • /app/page.tsx – 页面入口示例:
  • /hooks/useActiveChat – 用于管理全局链状态;已展示完毕,
  • /components/NFTList – NFT 列表组件;已展示完毕,
  • /utils/signBid – 签名逻辑;已展示完毕,不过,
  • /config/wagmu.ts – 全局 Wagmu 配置;已展示完毕,按理说,
  • /layout.jsx – 包装 Providers:
  • = /app/layout.jsx — 如下所示:
Home Component Example

<?php>

请注意

  • 不要忘记将 transports key 设置为数字 ID
  • 记得在根组件中包裹
  • 每次修改都要重启 dev server 并清除缓存

踩坑记录

  • . Cannot read properties of

  • . 切换网络后页面数据不更新:依赖数组写错导致 refetch 没执行。改成 就行。话说回来,
  • . Polygon 上签名后端验签失败:domain.chainID 写死导致验签不通过。动态获取即可解决,
  • . 未连接钱包时使用 useReadContract 返回


标签: 两天

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback