在Conflux链上将WalletConnect与您的React应用集成
本教程将指导你如何将WalletConnect无缝集成到您的React应用程序中,使用户能够与Conflux eSpace进行交互,从而为您 的用户提供一种安全且直观的方式来,将他们的钱包连接到你在Conflux eSpace上的dApp上。
前提条件
- 在您的计算机上安装了Node.js
- 对React、JavaScript和TypeScript有基本的了解
- 一个与Conflux eSpace网络兼容的钱包(例如MetaMask)
第 1 步:设置你的React项目
如果你尚未创建React项目,请首先设置一个。 如果你已经有一个现有的项目,则可以跳过此步骤。
npx create-react-app web3modal-conflux-react
cd web3modal-conflux-react
第 2 步:安装必要的库
Web3Modal SDK支持Wagmi,这将帮助你与钱包和智能合约进行交互。
npm install @web3modal/wagmi wagmi viem @tanstack/react-query
第 3 步:设置WalletConnect
在你的项目中创建一个新文件 Web3ModalConfig.tsx
,并导入设置 WalletConnect 所需的模块。
import { createWeb3Modal } from "@web3modal/wagmi/react";
import { http, createConfig, WagmiProvider } from "wagmi";
// Import Conflux eSpace network config for wagmi
import { confluxESpace} from "wagmi/chains";
import { walletConnect, injected, coinbaseWallet } from "wagmi/connectors";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactNode } from "react";
// 0. Setup queryClient
const queryClient = new QueryClient();
// 1. Get projectId at https://cloud.walletconnect.com
const projectId = "YOUR_PROJECT_ID";
// 2. Create wagmiConfig
const metadata = {
name: "Web3Modal",
description: "Web3Modal Example",
url: "https://web3modal.com", // origin must match your domain & subdomain
icons: ["https://avatars.githubusercontent.com/u/37784886"],
};
const config = (createConfig as any)({
chains: [confluxESpace],
transports: {
[confluxESpace.id]: http(),
},
connectors: [
walletConnect({ projectId, metadata, showQrModal: false }),
injected({ shimDisconnect: true }),
coinbaseWallet({
appName: metadata.name,
appLogoUrl: metadata.icons[0],
}),
],
});
// 3. Create modal
createWeb3Modal({
wagmiConfig: config,
projectId,
enableAnalytics: false, // Optional - defaults to your Cloud configuration
enableOnramp: false, // Optional - false as default
});
export function Web3ModalProvider({ children }: { children: ReactNode }) {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
</WagmiProvider>
);
}
关于如何获取 ProjectId
的详细信息,请参考这篇文章。