Skip to content

Connecting to the wallet

Ref - https://wagmi.sh/react/guides/connect-wallet

  • Initialise a react app
npm create vite@latest
  • Create a simple component to send ETH to an address
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
function App() {
const [count, setCount] = useState(0)
return (
<div>
<input type="text"></input>
<button>Send</button>
</div>
)
}
export default App

Screenshot 2024-10-18 at 1.54.43 PM.png

  • Add wagmi and other dependencies
npm add wagmi viem@2.x @tanstack/react-query
  • Create a config.ts file
import { http, createConfig } from 'wagmi'
import { base, mainnet, optimism } from 'wagmi/chains'
import { injected, metaMask, safe, walletConnect } from 'wagmi/connectors'
const projectId = '<WALLETCONNECT_PROJECT_ID>'
export const config = createConfig({
chains: [mainnet, base],
connectors: [
injected(),
walletConnect({ projectId }),
metaMask(),
safe(),
],
transports: {
[mainnet.id]: http(),
[base.id]: http(),
},
})
  • Wrap the app inside the providers
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { WagmiProvider } from 'wagmi'
import { config } from './config'
const queryClient = new QueryClient()
function App() {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
{/** ... */}
</QueryClientProvider>
</WagmiProvider>
)
}
  • Create a WalletOptions component
import * as React from 'react'
import { Connector, useConnect } from 'wagmi'
export function WalletOptions() {
const { connectors, connect } = useConnect()
return connectors.map((connector) => (
<button key={connector.uid} onClick={() => connect({ connector })}>
{connector.name}
</button>
))
}
  • Render wallet options
function App() {
// 3. Wrap app with Wagmi and React Query context.
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
<WalletOptions />
</QueryClientProvider>
</WagmiProvider>
)
}

Screenshot 2024-10-18 at 4.34.33 PM.png