wagmi

wagmi logo

wagmi-versionwagmi-licensewagmi-downloadswagmi-starswagmi-best-of-jswagmi-sponsors

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 相关内容:

支持我们

帮助支持未来的发展,使 wagmi 成为一个可持续的开源项目。谢谢 🙏

赞助商

Paradigm
FamilyContextWalletConnectLooksRarePartyDAODynamicSushiStripeBitKeepPrivySprucerollup.idPancakeSwapCeloRainbowPimlicoZoraLatticeSupazkSync