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
- 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> )}