关于 near-dapp
用于创建 NEAR dApp,或为现有 React 与非 React 应用添加钱包连接的技能。它根据任务引导使用脚手架、React hooks 或底层连接器。
主要功能
- 01使用 create-near-app 创建应用
- 02通过 hooks 连接 React 钱包
- 03配置非 React 钱包连接器
- 04读取和写入合约状态
适用场景
- 01从零开始搭建 NEAR dApp
- 02为 React 应用添加钱包登录
- 03在原生 JavaScript 中连接钱包
- 04读取或调用 NEAR 合约方法
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ near/ agent-skills --skill near-dapp安装后在 Claude Code 中输入/near-dapp确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/create-near-app.mdnear-connect-hooks.mdnear-connect.md详细介绍
NEAR dApp
上游文档
- Web3 App Quickstart — 官方首个 dApp 指南
- Wallet Connector — 此处使用的
@hot-labs/near-connect连接器的官方文档 - Wallet Login tutorial
- create-near-app repo — 脚手架工具源码(已验证的模板:
auction、auction-adv;--help为权威依据)
决策路由
确定要遵循的路径:
路径 A:新建项目
用户希望从头开始创建新的 NEAR dApp。
- 阅读 references/create-near-app.md
- 运行脚手架:
npx create-near-app@latest
或使用参数:
npx create-near-app my-app --frontend vite-react --contract rs --install
框架选项: vite-react | next-app | next-page
合约选项: rs(Rust)| ts(TypeScript)
- 如果用户需要在脚手架生成的应用中连接钱包,也请遵循路径 B。
路径 B:现有项目
用户希望在现有 React 应用中添加 NEAR 钱包连接功能。
- 阅读 references/near-connect-hooks.md — React hooks API 和模式
- 如果用户需要底层钱包 API 或非 React 集成,也请阅读 references/near-connect.md
快速设置:
npm install near-connect-hooks @hot-labs/near-connect near-api-js
// 1. Wrap app root with NearProvider
import { NearProvider } from 'near-connect-hooks';
<NearProvider config={{ network: 'mainnet' }}>
<App />
</NearProvider>
// 2. Use hook in components
import { useNearWallet } from 'near-connect-hooks';
const { signedAccountId, signIn, signOut, viewFunction, callFunction } = useNearWallet();
路径 C:非 React 或 Vanilla JS
直接使用 @hot-labs/near-connect,无需 React hooks。
npm install @hot-labs/near-connect
import { NearConnector } from "@hot-labs/near-connect";
const connector = new NearConnector({ network: "mainnet" });
connector.on("wallet:signIn", async (t) => {
const wallet = await connector.wallet();
const address = t.accounts[0].accountId;
});
await connector.connect();
关键模式
- 读取合约状态(无需钱包):
viewFunction({ contractId, method, args }) - 向合约写入(需要钱包):
callFunction({ contractId, method, args, deposit }) - 转账 NEAR:
transfer({ receiverId, amount }) - NEAR ↔ yoctoNEAR:使用
near-api-js中的nearToYocto()/yoctoToNear() - 1 NEAR =
"1000000000000000000000000"yoctoNEAR - 默认 gas:
"30000000000000"(30 TGas)
评论
支持 Markdown