Conectar wallet - Integraci贸n Rainbowkit

A帽adir-conexi贸n-a-billetera

Uso del bot贸n Conectar

Ahora que hemos empaquetado nuestra aplicaci贸n con los componentes WagmiConfig y RainbowKitProvider, podemos usar la biblioteca de ganchos wagmi y el componente ConnectButton de RainbowKit para permitir a los usuarios conectar su billetera e informar al usuario que su billetera est谩 conectada.

En /components/Navbar.js, podemos importar el componente ConnectButton de RainbowKit y los ganchos useAccount y useDisconnect de wagmi.

import { ConnectButton } from "@rainbow-me/rainbowkit";
import { useAccount, useDisconnect } from "wagmi";

Usaremos el gancho useAccount para acceder a la billetera conectada, si existe, y el gancho useDisconnect para desconectar la billetera conectada actualmente.

export default function Navbar() {
    const { data: account } = useAccount();
    const { disconnect } = useDisconnect();

En nuestra Navbar, podemos verificar el estado de conexi贸n de la billetera del usuario. Si la billetera del usuario est谩 conectada, visualizaremos un bot贸n que muestra la direcci贸n de la billetera del usuario y activa un men煤 desplegable. De lo contrario, si la billetera del usuario no est谩 conectada, visualizaremos el bot贸n "Conectar billetera" de RainbowKit. Podemos agregar este bot贸n despu茅s del bot贸n Crear evento.

    </Link>
    {account ? (
        <Navmenu account={account} disconnect={() => disconnect()} />
    ) : (
        <ConnectButton />
    )}
</div>

As铆 es como su archivo Navbar.js se debe observar:

import { useState, useEffect } from "react";
import Link from "next/link";
import Navmenu from "./Navmenu";
import { ConnectButton } from "@rainbow-me/rainbowkit";
import { useAccount, useDisconnect } from "wagmi";

export default function Navbar() {
  const { data: account } = useAccount();
  const { disconnect } = useDisconnect();
  const [mounted, setMounted] = useState(false);

  useEffect(() => {
    setMounted(true);
  }, []);

  return (
    mounted && (
      <header className="bg-white border-b-2 border-gray-100">
        <nav
          className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"
          aria-label="Top"
        >
          <div className="w-full py-6 flex flex-wrap items-center justify-between border-b border-indigo-500 lg:border-none">
            <div className="flex items-center">
              <Link href="/">
                <a>web3rsvp</a>
              </Link>
            </div>
            <div className="ml-10 space-x-4 flex items-center">
              <Link href="/create-event">
                <a className="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-indigo-700 border border-indigo-100 hover:bg-indigo-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
                  Create Event
                </a>
              </Link>
              {account ? (
                <Navmenu account={account} disconnect={() => disconnect()} />
              ) : (
                <ConnectButton />
              )}
            </div>
          </div>
        </nav>
      </header>
    )
  );
}

Pasamos el objeto de cuenta y la funci贸n de desconexi贸n a nuestro componente Navmenu. Los pr贸ximos dos pasos ya est谩n hechos para usted. En /components/Navmenu.js, notar谩 que mostramos la direcci贸n de la billetera de conexi贸n de la siguiente manera:

<p className="text-ellipsis overflow-hidden">{account.address}</p>

Tambi茅n permitimos que los usuarios puedan desconectar sus billeteras:

<a
  onClick={disconnect}
  className={joinClassNames(
    account ? "bg-gray-100 text-gray-900" : "text-gray-700",
    "block px-4 py-2 text-sm cursor-pointer"
  )}
>
  Log Out
</a>

A lo largo de nuestra dApp, verificamos la conexi贸n de la billetera del usuario para renderizar condicionalmente la interfaz de usuario usando el gancho useAccount de wagmi.

Despu茅s de una configuraci贸n e importaci贸n exitosas, al hacer clic en el bot贸n de conexi贸n, debe esperar una interfaz de usuario como esta:

Escritoras: Sarah Z, Busayo, Traductoras: Dami, Brenda, Caro Meneses

Last updated