How to integrate wallet connection in React frontends using @aptos-labs/wallet-adapter-react. Covers
指导如何在React中使用@aptos-labs/wallet-adapter-react实现钱包连接和前端交易提交。最终用户通过浏览器钱包(Petra、Nightly等)签署交易——绝不使用原始私钥。
bash
npm install @aptos-labs/wallet-adapter-react
现代AIP-62标准钱包(Petra、Nightly等)会自动检测,无需额外安装包。旧版钱包需要单独安装其插件包。
用AptosWalletAdapterProvider包裹应用根组件:
tsx
// main.tsx 或 App.tsx
import { AptosWalletAdapterProvider } from @aptos-labs/wallet-adapter-react;
import { Network } from @aptos-labs/ts-sdk;
function App() {
return (
dappConfig={{
network: Network.TESTNET
}}
onError={(error) => console.error(钱包错误:, error)}
>
);
}
tsx
import { useWallet } from @aptos-labs/wallet-adapter-react;
function MyComponent() {
const {
account, // 当前连接账户 { address, publicKey }
connected, // 布尔值:是否已连接钱包?
wallet, // 当前钱包信息 { name, icon, url }
wallets, // 可用钱包数组
connect, // (walletName) => Promise
disconnect, // () => Promise
signAndSubmitTransaction, // 提交入口函数调用(在前端使用此方法)
signTransaction, // 仅签名不提交
submitTransaction, // 提交已签名的交易
signMessage, // 签名任意消息
signMessageAndVerify, // 签名并验证消息
changeNetwork, // 切换网络(并非所有钱包支持)
network // 当前网络信息
} = useWallet();
}
前端交易模式
使用带InputTransactionData的类型化负载:
tsx
// entry-functions/increment.ts
import { InputTransactionData } from @aptos-labs/wallet-adapter-react;
import { MODULE_ADDRESS } from ../lib/aptos;
export function buildIncrementPayload(): InputTransactionData {
return {
data: {
function: ${MODULE_ADDRESS}::counter::increment,
functionArguments: []
}
};
}
tsx
// components/IncrementButton.tsx
import { useWallet } from @aptos-labs/wallet-adapter-react;
import { aptos } from ../lib/aptos;
import { buildIncrementPayload } from ../entry-functions/increment;
function IncrementButton() {
const { signAndSubmitTransaction } = useWallet();
const handleClick = async () => {
try {
const response = await signAndSubmitTransaction(buildIncrementPayload());
await aptos.waitForTransaction({
transactionHash: response.hash
});
} catch (error) {
console.error(交易失败:, error);
}
};
return ;
}
tsx
import { useWallet } from @aptos-labs/wallet-adapter-react;
function WalletInfo() {
const { account, connected, connect, disconnect, wallet, wallets } = useWallet();
if (!connected) {
return (
return (
已连接: {account?.address}
钱包: {wallet?.name}
| 错误 | 正确做法 |
|---|---|
| 缺少AptosWalletAdapterProvider包裹 | 用提供者包裹应用根组件 |
| 提交后未等待交易完成 |
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 ts-sdk-wallet-adapter-1776168131 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 ts-sdk-wallet-adapter-1776168131 技能
skillhub install ts-sdk-wallet-adapter-1776168131
文件大小: 2.85 KB | 发布时间: 2026-4-17 16:24