@vechain/dapp-kit-react
- An extension of
@vechain/connex
to containing various hooks and components to simplify wallet connection and interaction - Please refer to the official documentation here
Installation
Build
yarn build
Usage
yarn add @vechain/dapp-kit-react
Optional: Wallet Connection Options
import type { WalletConnectOptions } from '@vechain/dapp-kit';
const walletConnectOptions: WalletConnectOptions = {
projectId: '<PROJECT_ID>',
metadata: {
name: 'My dApp',
description: 'My dApp description',
url: window.location.origin,
icons: [`${window.location.origin}/images/my-dapp-icon.png`],
},
};
Initialise the DAppKitProvider
import { DAppKitProvider } from '@vechain/dapp-kit-react';
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<DAppKitProvider
// REQUIRED: The URL of the node you want to connect to
nodeUrl={'https://testnet.vechain.org/'}
// OPTIONAL: Required if you're not connecting to the main net
genesis={'test'}
// OPTIONAL: Whether or not to persist state in local storage (account, wallet source)
usePersistence={true}
// OPTIONAL: Options to enable wallet connect
walletConnectOptions={walletConnectOptions}
// OPTIONAL: A log level for console logs
logLevel="DEBUG"
>
<App />
</DAppKitProvider>
</React.StrictMode>,
);
Hooks
import { useWallet, useConnex } from '@vechain/dapp-kit-react';
import type { WalletSource } from '@vechain/dapp-kit';
const mySource: WalletSource = 'veworld';
const { connect, setSource } = useWallet();
setSource(mySource);
const { account } = await connect();
const { vendor, thor } = useConnex();
UI Components
-
Modal + Button
- Use the
ConnectWalletButton
component to display a modal with the available wallets
import { ConnectButtonWithModal } from '@vechain/dapp-kit-react';
import { useWallet } from '@vechain/dapp-kit-react';
const MyComponent = (): JSX.Element => {
const { account } = useWallet();
useEffect(() => {
if (account) {
}
}, [account]);
return (
<>
<ConnectButtonWithModal />
</>
);
};
- Custom Button
- Leverage
useWalletModal
to open and close the built-in wallet Modal
import { useWallet, useWalletModal } from '@vechain/dapp-kit-react';
export const MyComponent = (): JSX.Element => {
const { account } = useWallet();
const { open, close } = useWalletModal();
useEffect(() => {
if (account) {
}
}, [account]);
return (
<>
<button onClick={open}>Connect Wallet</button>
</>
);
};