CtrlK
BlogDocsLog inGet started
Tessl Logo

taro-ui-guide

Guides installation, Taro config, styling, and usage of taro-ui (At* components) for WeChat/Alipay/H5/RN. Use when building Taro apps with taro-ui, picking components, theming, i18n, or modifying packages/taro-ui source.

73

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Taro UI 使用指南

基于 Taro 3+ 的多端 React 组件库。组件均以 At 前缀导出(如 AtButton),样式与逻辑分离,需单独引入 SCSS。

官方文档:https://jd-opensource.github.io/taro-ui/#/
源码:packages/taro-ui/(本 monorepo)

何时使用本 Skill

  • 在 Taro 项目中集成、配置或排查 taro-ui
  • 选择/组合组件、查 Props、写示例页面
  • 自定义主题、国际化、按需加载
  • 在本仓库内开发/修复 packages/taro-ui 组件

版本与安装

Taro 版本taro-ui 版本
< 3taro-ui@2.3.4
≥ 3taro-ui@latest(当前 monorepo 为 3.x)
pnpm add taro-ui
# 或 npm install taro-ui@latest

Peer 依赖@tarojs/taro@tarojs/components@tarojs/reactreactreact-dom(≥16.13)。RN 端另需 react-nativereact-native-modal(可选)。

微信小程序需基础库 ≥ 2.2.3globalClass 与样式穿透)。

Taro 项目必配项

在消费方项目的 config/index.ts(或 config/index.js)中:

1. H5 编译 node_modules 中的 taro-ui

h5: {
  esnextModules: ['taro-ui']
}

2. Taro 3.5+ 关闭对 taro-ui 的 prebundle(否则 @tarojs/components 可能未打进 bundle,页面异常)

compiler: {
  type: 'webpack5',
  prebundle: {
    exclude: ['taro-ui']
  }
}

样式引入

样式在 taro-ui/dist/style/不会随 JS 自动注入,必须显式引入。

全量(开发/原型)

入口或 app.scss

import 'taro-ui/dist/style/index.scss'
@import 'taro-ui/dist/style/index.scss';

按需(推荐生产)

页面/全局 SCSS 按组件名引入(AtButtonbutton.scss):

@import 'taro-ui/dist/style/components/button.scss';

或用 babel-plugin-import(见 docs/docs/guide/quickstart.md):

// babel.config.js plugins
['import', {
  libraryName: 'taro-ui',
  customName: name => `taro-ui/lib/components/${name.slice(3)}`,
  customStyleName: name => `taro-ui/dist/style/components/${name.slice(3)}.scss`
}, 'taro-ui']

At 前缀去掉后即为目录名:AtActionSheetaction-sheet

组件使用模式

基础引入

import { View } from '@tarojs/components'
import { AtButton } from 'taro-ui'

export default function Page() {
  return (
    <View>
      <AtButton type="primary" onClick={() => {}}>
        按钮
      </AtButton>
    </View>
  )
}

公共 Props(AtComponent

多数组件支持:

Prop说明
className外层类名(小程序可用 globalClass 覆盖内部 BEM 类)
customStyle内联样式,stringCSSProperties
children子节点

类型定义:packages/taro-ui/types/base.d.ts

复合组件

按文档组合子组件,例如:

  • AtModal + AtModalHeader / AtModalContent / AtModalAction
  • AtList + AtListItem
  • AtTabs + AtTabsPane
  • AtActionSheet + AtActionSheetItem

按组件查阅:references/README.md(如 references/button.md)。仅在使用该组件时打开对应文件。

受控与回调

  • 开关类:open / isOpened + onClick / onClose(以各组件 types/*.d.ts 为准)
  • 表单类:AtForm 包裹 AtInputAtSwitch 等,注意 formType、校验文案
  • 环境判断:组件内部常用 Taro.getEnv() 区分 WEB / WEAPP / ALIPAY

查 Props 时优先读 references/<slug>.md,其次 packages/taro-ui/types/<component>.d.tsdocs/docs/components/<name>.md

命令式 API:AtMessage

页面需挂载 <AtMessage />,再通过 Taro.atMessage 调用:

import Taro from '@tarojs/taro'
import { AtMessage } from 'taro-ui'

// render 中: <AtMessage />
Taro.atMessage({ message: '提示', type: 'success', duration: 3000 })
// type: info | success | error | warning

AtToast 为声明式:isOpenedtextstatusonClose

国际化 ConfigProvider

import { ConfigProvider, AtLoadMore, enUS } from 'taro-ui'

export default function App({ children }) {
  return (
    <ConfigProvider locale={enUS}>
      {children}
    </ConfigProvider>
  )
}
  • 内置:zhCN(默认)、enUS
  • locale 与默认包深合并,可只覆盖部分 key(如 LoadMore.moreText
  • 优先级:组件 props > ConfigProvider.locale > 默认 zhCN

自定义主题

  1. SCSS 变量(推荐):在引入默认样式之前覆盖变量,再 @import 全量样式。
$color-brand: #6190e8;
@import 'taro-ui/dist/style/index.scss';

变量表:packages/taro-ui/src/style/variables/default.scss

  1. globalClass:在 Page 级 SCSS 用 .my-btn.at-button { } 覆盖(自定义组件内无效)。

  2. customStyle:仅部分组件支持,优先用前两种方式。

AtSliderAtSwitch 暂不支持 SCSS 变量覆盖主题。

在本仓库开发 taro-ui

pnpm install          # 根目录,仅允许 pnpm
pnpm build:ui         # 构建 packages/taro-ui → dist/
pnpm --filter demo dev:h5
pnpm --filter demo dev:weapp
pnpm --filter docs dev

组件实现路径:

内容路径
组件实现packages/taro-ui/src/components/<name>/
类型packages/taro-ui/types/<name>.d.ts
样式packages/taro-ui/src/style/components/<name>.scss
导出packages/taro-ui/src/index.ts
RN 实现packages/taro-ui/rn/components/
单测packages/taro-ui/test/components/

新增/修改组件:同步更新 src/index.ts、类型文件、样式、test 快照;提交信息格式 feat(ComponentName): ...(见 .github/CONTRIBUTING.md)。

Agent 工作流

  1. 确认场景:消费方 Taro 项目 vs 本 monorepo 源码修改。
  2. 查 APIreferences/<slug>.mdtypes/*.d.tsdocs/docs/components/*.md
  3. 写用法import { AtX } from 'taro-ui' + 对应 dist/style/components/x.scss
  4. 排查样式缺失:是否引入 SCSS;H5 是否配置 esnextModules;是否配置 prebundle.exclude
  5. 排查小程序样式:基础库版本、globalClass、BEM 类名是否与文档一致。

延伸阅读

  • references/README.md — 组件索引(按维度渐进披露)
  • docs/docs/guide/quickstart.md — 快速上手与 babel 按需
  • docs/docs/guide/customize-theme.md — 主题详解
Repository
jd-opensource/taro-ui
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.