wagmi
wagmi 是一个 React Hook 的集合,包含了你与以太坊交互所需的一切。wagmi 使连接钱包、显示 ENS 和余额信息、签署消息、与合约交互等变得简单——所有这些都有缓存、重复请求降重和持久化。
npm i wagmi viem
总览
import { WagmiConfig, createConfig, mainnet } from 'wagmi'
import { createPublicClient, http } from 'viem'
const config = createConfig({
autoConnect: true,
publicClient: createPublicClient({
chain: mainnet,
transport: http()
}),
})
function App() {
return (
<WagmiConfig config={config}>
<Profile />
</WagmiConfig>
)
}
import { useAccount, useConnect, useDisconnect } from 'wagmi'
import { InjectedConnector } from 'wagmi/connectors/injected'
function Profile() {
const { address, isConnected } = useAccount()
const { connect } = useConnect({
connector: new InjectedConnector(),
})
const { disconnect } = useDisconnect()
if (isConnected)
return (
<div>
Connected to {address}
<button onClick={() => disconnect()}>Disconnect</button>
</div>
)
return <button onClick={() => connect()}>Connect Wallet</button>
}
在这个例子中,我们创建了一个 wagmi config WagmiConfig
这一 React context。config 使用了 viem 的默认 Public Client,并自动连接到之前连接的钱包。
接下来,我们使用 useConnect
Hook 将一个注入的钱包(例如 MetaMask)连接到应用程序。最后,我们用 useAccount
显示连接的帐户地址,并允许它们用 useDisconnect
断开连接。
我们只是触及了 wagmi 的表面!
功能
wagmi 开箱即用地提供了以下功能:
- 20 多个 Hook 用于处理 Wallet、ENS、Contract、Transaction、Signature 等
- 内置 MetaMask、WalletConnect、Coinbase Wallet 和 Injected 的钱包连接器
- 缓存、重复请求降重、multicall、批量处理和持久化
- 基于钱包、区块和网络的变化自动刷新数据
- 支持 TypeScript(可以从 ABI 和 EIP-712 类型数据中推断类型)
- 支持从以太坊网络分叉运行的测试套件
还有更多⋯⋯
社区
查看以下地方,了解更多 wagmi 相关内容:
- 在 Twitter 上关注 @wevm_dev, @awkweb @jakemoxey 以获得项目更新。
- 加入 Github 上的 discussions。
- 分享 你使用 wagmi 的项目/组织。
- 浏览 awesome-wagmi 里面所陈列的超级棒的项目和资源。
支持我们
帮助支持未来的发展,使 wagmi 成为一个可持续的开源项目。谢谢 🙏