题目
一个新项目要接入 wagmi 3.x。请给出最小接入步骤,并说明 chains、transports 与 connectors 三者在配置里的作用,以及 Provider 的嵌套顺序。
考察目标
- createConfig 的必要配置项。
- Provider 的组合顺序与 QueryClient 的创建方式。
- 客户端组件与 SSR 的边界。
给出 createConfig、Provider 组合与 QueryClient 的接入方式,并说明常见的配置错误。
一个新项目要接入 wagmi 3.x。请给出最小接入步骤,并说明 chains、transports 与 connectors 三者在配置里的作用,以及 Provider 的嵌套顺序。
用 createConfig 声明 chains 与按链配置的 transports,并按需声明 connectors;用 WagmiProvider 包裹应用并传入 config,在内部再用 QueryClientProvider 包裹,QueryClient 采用稳定引用(例如在组件内用 useState 初始化,或在模块层创建)。使用 hooks 的组件需要是客户端组件;SSR 场景按官方指南处理状态序列化。实现差异与工程取舍见深入回答。
// config.ts:在模块层创建一次,供客户端组件共享。
// 省略上下文:RPC 地址通过环境变量注入,错误处理与 UI 未展开。
import { createConfig, http } from "wagmi";
import { mainnet, sepolia } from "wagmi/chains";
import { injected } from "wagmi/connectors";
export const config = createConfig({
chains: [mainnet, sepolia],
connectors: [injected()],
transports: {
[mainnet.id]: http(),
[sepolia.id]: http(),
},
});
// providers.tsx:客户端组件,把 config 与 QueryClient 注入应用。
"use client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { useState } from "react";
import { WagmiProvider } from "wagmi";
import { config } from "./config";
export function Providers({ children }: { children: React.ReactNode }) {
const [queryClient] = useState(() => new QueryClient());
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
</WagmiProvider>
);
}
发现这道题有问题? 反馈此题