Rainbow logo
RainbowKit
2.2.11

Benutzerdefinierte ConnectButton

Benutzerdefinierte ConnectButton

Einen benutzerdefinierten ConnectButton erstellen

Sie können den Low-Level ConnectButton.Custom verwenden, um Ihren eigenen benutzerdefinierten Verbindungsknopf zu erstellen. Diese Komponente rendert eine Funktion, die alles enthält, was Sie benötigen, um die integrierten Schaltflächen neu zu implementieren.

Eine minimale Re-Implementierung der integrierten Schaltflächen könnte so aussehen:

import { ConnectButton } from '@rainbow-me/rainbowkit';
export const YourApp = () => {
return (
<ConnectButton.Custom>
{({
account,
chain,
openAccountModal,
openChainModal,
openConnectModal,
authenticationStatus,
mounted,
}) => {
// Note: If your app doesn't use authentication, you
// can remove all 'authenticationStatus' checks
const ready = mounted && authenticationStatus !== 'loading';
const connected =
ready &&
account &&
chain &&
(!authenticationStatus ||
authenticationStatus === 'authenticated');
return (
<div {...(!ready && { 'aria-hidden': true, 'style': { opacity: 0, pointerEvents: 'none', userSelect: 'none', }, })} >
{(() => {
if (!connected) {
return (
<button onClick={openConnectModal} type="button">
Connect Wallet
</button>
);
}
if (chain.unsupported) {
return (
<button onClick={openChainModal} type="button">
Wrong network
</button>
);
}
return (
<div style={{ display: 'flex', gap: 12 }}>
<button onClick={openChainModal} style={{ display: 'flex', alignItems: 'center' }} type="button" >
{chain.hasIcon && (
<div style={{ background: chain.iconBackground, width: 12, height: 12, borderRadius: 999, overflow: 'hidden', marginRight: 4, }} >
{chain.iconUrl && (
<img alt={chain.name ?? 'Chain icon'} src={chain.iconUrl} style={{ width: 12, height: 12 }} />
)}
</div>
)}
{chain.name}
</button>
<button onClick={openAccountModal} type="button">
{account.displayName}
{account.displayBalance
? ` (${account.displayBalance})`
: ''}
</button>
</div>
);
})()}
</div>
);
}}
</ConnectButton.Custom>
);
};

Die folgenden Props werden an Ihre Renderfunktion übergeben.

PropTypeDefault
accountobject | undefined –
account.addressstring –
account.balanceDecimalsstring | undefined –
account.balanceFormattedstring | undefined –
account.balanceSymbolstring | undefined –
account.displayBalancestring | undefined –
account.displayNamestring –
account.ensAvatarstring | undefined –
account.ensNamestring | undefined –
account.hasPendingTransactionsboolean –
PropTypeDefault
chainobject | undefined –
chain.hasIconboolean –
chain.iconUrlstring | undefined –
chain.iconBackgroundstring | undefined –
chain.idnumber –
chain.namestring | undefined –
chain.unsupportedboolean | undefined –
PropTypeDefault
openAccountModal() => void –
openChainModal() => void –
openConnectModal() => void –
accountModalOpenboolean –
chainModalOpenboolean –
connectModalOpenboolean –
PropTypeDefault
mountedboolean –
authenticationStatus"loading" | "unauthenticated" | "authenticated" | undefined –