onchainkit

onchainkit

React组件和TypeScript工具库助力链上应用开发

OnchainKit是一个面向链上应用开发的开源库,提供React组件和TypeScript工具。主要功能包括身份展示、Frame元数据处理、钱包连接等组件,以及配置、身份查询、代币操作等实用函数。该项目还开源了Figma设计文件,便于快速构建界面。OnchainKit由经验丰富的开发者维护,拥有活跃的社区。

OnchainKit区块链应用React组件TypeScript工具Web3开发Github开源项目
<p align="center"> <a href="https://onchainkit.xyz"> <picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/logo/v0-29.png"> <img alt="OnchainKit logo 氛围" src="https://yellow-cdn.veclightyear.com/835a84d5/2c28f6d2-07ec-480a-8f3d-286995ddc0a0.png" width="auto"> </picture> </a> </p>

OnchainKit

<p align="left"> React组件和TypeScript实用工具,帮助您构建顶级的链上应用。 <p> <p align="left"> <a href="https://www.npmjs.com/package/@coinbase/onchainkit" target="_blank" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/@coinbase/onchainkit?colorA=21262d&colorB=21262d&style=flat"> <img src="https://img.shields.io/npm/v/@coinbase/onchainkit?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="版本"> </picture> </a> <a href="https://github.com/coinbase/onchainkit/blob/main/LICENSE.md" target="_blank" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/@coinbase/onchainkit?colorA=21262d&colorB=21262d&style=flat"> <img src="https://img.shields.io/npm/l/@coinbase/onchainkit?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT许可证"> </picture> </a> <a href="https://www.npmjs.com/package/@coinbase/onchainkit" target="_blank" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/dm/@coinbase/onchainkit?colorA=21262d&colorB=21262d&style=flat"> <img src="https://img.shields.io/npm/dm/@coinbase/onchainkit?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="每月下载量"> </picture> </a> </p> <br />

文档

访问onchainkit.xyz查看文档和指南。

快速开始

您可以通过将OnchainKit作为依赖项安装到现有项目中来使用它。

安装

让我们将OnchainKit及其依赖项作为依赖项安装。

# Yarn: 添加库 yarn add @coinbase/onchainkit # 或 # 使用NPM npm install @coinbase/onchainkit # 使用PNPM pnpm add @coinbase/onchainkit # 使用BUN bun add @coinbase/onchainkit

配置OnchainKitProvider

<OnchainKitProvider />组件为您的应用提供了与OnchainKit组件和实用工具交互所需的基本上下文。

chain属性设置为您的目标链,并提供API密钥以访问嵌入式API。

'use client'; import { ReactNode } from 'react'; import { base } from 'viem/chains'; import { OnchainKitProvider } from '@coinbase/onchainkit'; type Props = { children: ReactNode }; function OnchainProviders({ children }: Props) { return ( <OnchainKitProvider apiKey="YOUR_PUBLIC_API_KEY" chain={base}> <YourKit /> </OnchainKitProvider> ); }; export default OnchainProviders;

Coinbase开发者平台API获取API密钥。

<img alt="OnchainKit复制API密钥" src="https://onchainkit.xyz/assets/copy-api-key-guide.png" width="auto" />

配置WagmiProvider

OnchainKit的许多组件需要WagmiProvider来访问Wagmi实用工具。

如果您的应用程序已经包含了这些设置,可以跳过此步骤。

OnchainProviders.tsx

'use client'; import { ReactNode } from 'react'; import { OnchainKitProvider } from '@coinbase/onchainkit'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; // [!code focus] import { base } from 'viem/chains'; import { WagmiProvider } from 'wagmi'; // [!code focus] import { wagmiConfig } from './wagmi'; // [!code focus] type Props = { children: ReactNode }; const queryClient = new QueryClient(); // [!code focus] function OnchainProviders({ children }: Props) { return ( <WagmiProvider config={wagmiConfig}> // [!code focus] <QueryClientProvider client={queryClient}> // [!code focus] <OnchainKitProvider apiKey={YOUR_PUBLIC_API_KEY} chain={base} > {children} // [!code focus] </OnchainKitProvider> </QueryClientProvider> // [!code focus] </WagmiProvider> // [!code focus] ); } export default OnchainProviders;

wagmi.ts

import { http, createConfig } from 'wagmi'; import { base } from 'wagmi/chains'; import { coinbaseWallet } from 'wagmi/connectors'; export const wagmiConfig = createConfig({ chains: [base], multiInjectedProviderDiscovery: false, connectors: [ coinbaseWallet({ appName: 'yourAppName', preference: 'all', version: '4', }), ], ssr: true, transports: { [base.id]: http(), }, });

为组件添加样式

所有OnchainKit组件都预先配置了样式。

只需将以下代码放在应用程序入口点的顶部,即可使组件开箱即用。

import '@coinbase/onchainkit/styles.css';

对于tailwindcss用户,请参考Tailwindcss集成指南

组件

显示ENS头像、认证徽章、ENS名称和账户地址

<Identity address="0x838aD0EAE54F99F1926dA7C3b6bFbF617389B4D9" schemaId="0xf8b05c79f090979bf4a80270aba232dff11a10d9ca55c4f88de95317970f0de9" > <Avatar> <Badge /> </Avatar> <Name /> <Address /> </Identity>
<picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-identity.png"> <img alt="OnchainKit身份组件" src="https://yellow-cdn.veclightyear.com/835a84d5/f26ea026-511f-4d68-b9ca-4e3ac9176a7b.png" width="auto"> </picture>

将您的网页转换为Frame

import { FrameMetadata } from '@coinbase/onchainkit/frame'; export default function HomePage() { return ( ... <FrameMetadata buttons={[ { label: '讲述故事', }, { action: 'link', label: '链接到Google', target: 'https://www.google.com' }, { action: 'post_redirect', label: '重定向到可爱的图片', }, ]} image={{ src: 'https://zizzamia.xyz/park-3.png', aspectRatio: '1:1' }} input={{ text: '讲一个关于船的故事', }} postUrl="https://zizzamia.xyz/api/frame" /> ... ); }

使用Connect Wallet创建或连接您的钱包,由Smart Wallet提供支持。

<Wallet> <ConnectWallet> <Avatar className="h-6 w-6" /> <Name /> </ConnectWallet> <WalletDropdown> <Identity className="px-4 pt-3 pb-2" hasCopyAddressOnClick> <Avatar /> <Name> <Badge /> </Name> <Address /> <EthBalance /> </Identity> <WalletDropdownLink icon="wallet" href="https://wallet.coinbase.com"> 前往钱包仪表板 </WalletDropdownLink> <WalletDropdownDisconnect /> </WalletDropdown> </Wallet>
<picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-wallet-1.png"> <img alt="OnchainKit钱包组件" src="https://yellow-cdn.veclightyear.com/835a84d5/f581b1f8-ec09-41cb-8910-9027043c6f02.png" width="auto"> </picture> <picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-wallet-2.png"> <img alt="OnchainKit钱包组件" src="https://yellow-cdn.veclightyear.com/835a84d5/0350c135-c0ed-4a1f-859a-658a3055344f.png" width="auto"> </picture>

使用getTokens搜索代币,并使用TokenSearchTokenChipTokenImageTokenRow显示它们

const [filteredTokens, setFilteredTokens] = useState<Token[]>([]); const handleChange = useCallback((value) => { async function getData(value) { const tokens: Token[] = await getTokens({ search: value }); // [!code focus] setFilteredTokens(filteredTokens); } getData(value); }, []); ... <div className="flex flex-col gap-4 rounded-3xl bg-white p-4"> <TokenSearch onChange={handleChange} delayMs={200} /> // [!code focus] {filteredTokens.length > 0 && ( <div className="flex gap-2"> {filteredTokens.map((token) => ( <TokenChip key={token.name} token={token} onClick={handleSelect} /> // [!code focus] ))} </div> )} {filteredTokens.length > 0 ? ( <div> <div className="text-body text-black">代币</div> <div> {filteredTokens.map((token) => ( <TokenRow key={token.name} token={token} onClick={handleSelect} /> // [!code focus] ))} </div> </div> ) : ( <div className="text-body text-black">未找到代币</div> )} </div>
<picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-token.png"> <img alt="OnchainKit钱包组件" src="https://yellow-cdn.veclightyear.com/835a84d5/2ac5b69d-f5e3-4725-a891-82ce22761aaa.png" width="auto"> </picture>

实用工具

如果你正在寻找基本的TypeScript实用工具,我们有许多现成的选项可供使用。

配置
框架
身份
交换
代币
钱包
Farcaster
XMTP

设计

我们所有的组件设计都是开源的。你可以访问Figma文件,将其用于你的链上项目。

<a href="https://www.figma.com/community/file/1370194397345450683"> <p>Figma - 使用方法</p> <picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-figma-design-how-to-use.png"> <img alt="OnchainKit标志氛围" src="https://yellow-cdn.veclightyear.com/835a84d5/af8bcee4-0fdb-4353-b32a-d302cde47473.png" width="auto"> </picture> <p>Figma - 组件</p> <picture> <source media="(prefers-color-scheme: dark)" srcset="./site/docs/public/assets/onchainkit-figma-design-components.png"> <img alt="OnchainKit标志氛围" src="https://yellow-cdn.veclightyear.com/835a84d5/4c0cc4f3-1276-4b11-baa1-9e4d0b3baa8b.png" width="auto"> </picture> </a>

链上应用模板

社区 ☁️ 🌁 ☁️

查看以下地方获取更多OnchainKit相关内容:

作者

许可证

本项目采用MIT许可证 - 详情请见LICENSE.md文件

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多