2.45.2 • Published 2 months ago

adui v2.45.2

Weekly downloads
464
License
MIT
Repository
-
Last release
2 months ago

开始使用

https://wxad.design/adui


使用 Package

adui 已经发布于 NPM。你可以通过你的包管理器安装(比如 Yarn):

yarn add adui react react-dom

adui 目前依赖的 reactreact-dom 版本为 16.13.1。adui 2.0 使用了 Hooks 书写组件,请保证你的 React 版本 ^16.8。


Import

引入你所需要的 React 组件。

import { Button } from "adui"

<Button intent="primary">开始使用<Button/>

你不需要独立地引入样式,因为每个组件都会 import 自己的 .css 文件。你只需要保证 webpack 的 css-loader 能够作用到 node_modules/adui 这个文件夹,就能保证样式的正确。

未来会加入不需要依赖 webpack 配置的编译版本,届时 CSS 文件会完全与 JS 文件分离。


主题色

adui 使用了 CSS Variables 实现变量配置。
在引入之后,你的页面上就会有如下的样式:

:root {
  --primary-color: #07c160;
}

你可以用更高优先级的 CSS 规则覆盖:

html:root {
  --primary-color: #00bb9c;
}

adui 还设置了许多其他变量比如 --gray-50--gray-900,但请不要去修改这些变量。


兼容性

Browsers support

IE / EdgeFirefoxChromeSafariOpera
Edgelast 2 versionslast 2 versionslast 2 versionslast 2 versions

关于组件类型

adui 2.0 一部分组件以 Function Component + Hooks 实现。 现在,组件一共有 类组件(Class Component),函数组件(Function Component),以及也属于函数组件的ForwardRef Component这三种。

关于内部驱动与外部控制

adui 所有包含状态的组件都有两种设计,即 内部驱动(uncontrolled)外部控制(controlled)。

代表内部驱动的 Prop 是 defaultValue,代表外部控制的 Prop 是 value。比如 <Switch /> 组件的 defaultCheckedchecked

defaultChecked 只在第一次渲染(constructor)时生效,之后的状态变化都会完全交给组件自身完成;
checked 则代表如果不从外部改变,那么组件的状态就不会变化(代码上由生命周期 getDerivedStateFromProps 实现的)。

这样设计的原理来源于 React 对表单的 Controlled/Uncontrolled 的概念。请阅读学习,并且按照需求选择这两种模式使用。

如果你只是需要设置一个初始值,并且只想要关心这个值的改变情况,比如 <Switch defaultChecked onChange={xxx} />,这样你就不需要单独地设置一个 state 保证组件 UI 状态的完整; 如果你想要存储这个变化的值,并且之后会用这个值回传给 <Switch />,那么你需要自己存储这个 state <Switch checked={xxx} onChange={xxx} />


⌨️ 本地开发说明

adui 的开发任务:

  1. 建立 adui 站点和组件文档;
  2. 书写 components 代码;
  3. 测试;
  4. 提交 pull request;
  5. 编译发布。
  npm i
  npm start

IDE 相关

Vscode 插件需要:ESlint + Stylelint。

建立 adui 站点和组件文档

adui 的文档生成工具是 bisheng

书写 components 代码

以 button 为例:

button
│   index.tsx                   组件出口
│   Button.tsx                  组件文件
└───__tests__                   enzyme + jest 单元测试
│   │   ...
└───demo
│   │   basic.md                md 会被 bisheng 解析,可在 md 中定义 order/title,以及书写 jsx 代码
│   │   others.md
└───style
    │   index.scss              scss 出口
    │   _button.scss            组件样式

组件的书写规范由以下方面限制

  1. .tsx - eslint
  2. .scss - stylelint
  3. 为了方便组件文档的建立,使用了 react-docgen 读取组件源代码。因此,组件必须有一句 title,以及每一个 prop 必须有文字说明。
export interface IButtonProps {
  /**
   * 类型
   */
  intent?: "normal" | "primary" | "success" | "warning" | "danger"
}
...
Button.propTypes = {
  /**
   * 类型
   */
  intent: PropTypes.oneOf([
    "normal",
    "primary",
    "success",
    "warning",
    "danger",
  ]),
}

react-docgen 实际读取 ts 类型,所以可以说 prop-types 也并没有实际的用处了。保留 prop-types 库是为了保留这种原生实现。

内部驱动与外部控制

有状态组件会使用 getDerivedStatesFromProp 生命周期实现,在无状态组件中,可以直接这样进行判断:

  // 相当于生命周期 getDerivedStateFromProps
  if (checkedProp !== null && checked !== checkedProp) {
    setChecked(!!checkedProp)
  }

测试

enzyme + jest 书写测试用例。 关于测试:

  1. 必须包含:最基本的快照 expect(<Button />).toMatchSnapshot()
  2. 必须包含:对内部驱动(defaultValue)和外部控制(value)的功能测试;
  3. npm run test 是跑全部测试,并生成 coverage,本地查看:adUI/coverage/lcov-report/index.html,请尽力提高 statements 的覆盖率;
  4. 跑单一组件测试,如jest components/button,请确保全局安装了 jest

编译与发布

发布与 Changelog 使用 standard-version

多人维护

  1. Pull Request Review:为了更好地进行 review,需要将 jest snapshot 一并 request;
  2. reviewer 为 wxad。

分支名称规范

待规范

提交规范

提交规范现在使用了 commitlint + husky 自动在 git pre-commit hook 时检测。同样在这时候会执行 stylelint 和 eslint。

使用 commitlint 做自动化 changelog。

推荐的 commit 示例:

新组件、功能(feature)

feat(Button): 添加 focus prop。

修复(bugfix)

fix(Button): 修复 focus 问题。

重构,无 feature & bugfix

refactor(Button): 调整 scss 结构。

文档相关

docs(Button): 添加 demo。

测试相关

test(Button): 添加快照。

2.45.2

2 months ago

2.44.10

8 months ago

2.44.11

7 months ago

2.45.0

6 months ago

2.45.1

6 months ago

2.44.7

9 months ago

2.44.8

9 months ago

2.44.6

10 months ago

2.44.5

10 months ago

2.44.3

11 months ago

2.44.4

11 months ago

2.44.1

1 year ago

2.44.2

1 year ago

2.25.1-alpha.0

2 years ago

2.34.0

2 years ago

2.30.2-alpha.2

2 years ago

2.30.2-alpha.0

2 years ago

2.30.2-alpha.1

2 years ago

2.33.0

2 years ago

2.44.0

1 year ago

2.29.3

2 years ago

2.29.0

2 years ago

2.29.2

2 years ago

2.29.1

2 years ago

2.32.0

2 years ago

2.32.2

2 years ago

2.32.1

2 years ago

2.43.0

1 year ago

2.43.2

1 year ago

2.43.1

1 year ago

2.28.0

2 years ago

2.31.0

2 years ago

2.39.1

2 years ago

2.39.0

2 years ago

2.42.1

2 years ago

2.42.0

2 years ago

2.40.5-alpha.0

2 years ago

2.27.0

2 years ago

2.30.2

2 years ago

2.30.1

2 years ago

2.30.3

2 years ago

2.35.1-alpha.3

2 years ago

2.35.1-alpha.2

2 years ago

2.35.1-alpha.1

2 years ago

2.30.0

2 years ago

2.35.1-alpha.0

2 years ago

2.38.0

2 years ago

2.41.0

2 years ago

2.26.2

2 years ago

2.26.1

2 years ago

2.26.0

2 years ago

2.37.3

2 years ago

2.37.2

2 years ago

2.37.4

2 years ago

2.37.1

2 years ago

2.37.0

2 years ago

2.40.3

2 years ago

2.40.2

2 years ago

2.40.4

2 years ago

2.40.1

2 years ago

2.40.0

2 years ago

2.25.0

2 years ago

2.36.3

2 years ago

2.36.0

2 years ago

2.36.2

2 years ago

2.36.1

2 years ago

2.35.1

2 years ago

2.35.0

2 years ago

2.26.3-alpha.3

2 years ago

2.26.3-alpha.2

2 years ago

2.26.3-alpha.1

2 years ago

2.26.3-alpha.0

2 years ago

2.22.0

2 years ago

2.24.2-alpha.0

2 years ago

2.24.2-alpha.1

2 years ago

2.21.0

2 years ago

2.21.1

2 years ago

2.20.1

2 years ago

2.23.1-alpha.0

2 years ago

2.22.1-alpha.0

2 years ago

2.22.1-alpha.1

2 years ago

2.24.1

2 years ago

2.24.0

2 years ago

2.24.2

2 years ago

2.23.0

2 years ago

2.19.2

2 years ago

2.19.0

2 years ago

2.18.2-alpha.1

3 years ago

2.19.1

2 years ago

2.18.2-alpha.0

3 years ago

2.17.1-alpha.0

3 years ago

2.18.1

3 years ago

2.18.2

3 years ago

2.18.0

3 years ago

2.19.1-alpha.0

2 years ago

2.17.0

3 years ago

2.20.0

2 years ago

2.18.3-alpha.0

2 years ago

2.15.1

3 years ago

2.16.0

3 years ago

2.15.0

3 years ago

2.14.2

3 years ago

2.14.1

3 years ago

2.14.0

3 years ago

2.13.0

3 years ago

2.12.2

3 years ago

2.12.0

3 years ago

2.12.1

3 years ago

2.11.1

3 years ago

2.11.2

3 years ago

2.11.0

3 years ago

2.10.4

3 years ago

2.10.3

3 years ago

2.10.1

3 years ago

2.10.2

3 years ago

2.10.0

3 years ago

2.8.1

3 years ago

2.7.0

3 years ago

2.7.1

3 years ago

2.8.3

3 years ago

2.8.2

3 years ago

2.9.0

3 years ago

2.4.1-alpha.1

3 years ago

2.6.0

3 years ago

2.5.0

3 years ago

2.4.0

3 years ago

2.4.1-alpha.0

3 years ago

2.3.2-alpha.3

3 years ago

2.3.2-alpha.1

3 years ago

2.3.2-alpha.0

3 years ago

2.3.2-alpha.2

3 years ago

2.3.0

3 years ago

2.3.1

3 years ago

2.2.0

3 years ago

2.1.1-alpha.1

3 years ago

2.1.1-alpha.0

3 years ago

2.1.0

3 years ago

2.0.1-alpha.10

3 years ago

2.0.1-alpha.8

3 years ago

2.0.1-alpha.9

3 years ago

2.0.0-alpha.11

3 years ago

2.0.0-alpha.10

3 years ago

2.0.0-alpha.19

3 years ago

2.0.0-alpha.18

3 years ago

2.0.0-alpha.17

3 years ago

2.0.0-alpha.16

3 years ago

2.0.0-alpha.15

3 years ago

2.0.0-alpha.14

3 years ago

2.0.0-alpha.13

3 years ago

2.0.0

3 years ago

2.0.0-alpha.12

3 years ago

2.0.1-alpha.6

3 years ago

2.0.1-alpha.7

3 years ago

2.0.1-alpha.0

3 years ago

2.0.1-alpha.1

3 years ago

2.0.1-alpha.2

3 years ago

2.0.1-alpha.3

3 years ago

2.0.1-alpha.4

3 years ago

2.0.1-alpha.5

3 years ago

2.0.0-alpha.9

3 years ago

2.0.0-alpha.7

3 years ago

2.0.0-alpha.8

3 years ago

2.0.0-alpha.6

3 years ago

2.0.0-alpha.5

3 years ago

2.0.0-alpha.3

3 years ago

2.0.0-alpha.4

3 years ago

2.0.0-alpha.2

3 years ago

2.0.0-alpha.0

3 years ago

2.0.0-alpha.1

3 years ago

1.6.1-alpha.5

3 years ago

1.6.1-alpha.4

3 years ago

1.6.0

3 years ago

1.5.4-alpha.5

3 years ago

1.5.4-alpha.6

3 years ago

1.5.4-alpha.7

3 years ago

1.5.4-alpha.8

3 years ago

1.6.1-alpha.3

3 years ago

1.6.1-alpha.2

3 years ago

1.6.1-alpha.1

3 years ago

1.6.1-alpha.0

3 years ago

1.5.4-alpha.3

3 years ago

1.5.4-alpha.4

3 years ago

1.5.4-alpha.1

3 years ago

1.5.4-alpha.2

3 years ago

1.5.4-alpha.0

3 years ago

1.5.3

3 years ago

1.5.3-alpha.1

3 years ago

1.5.3-alpha.0

3 years ago

1.5.2

3 years ago

1.5.1

3 years ago

1.5.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.2.3

3 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

1.0.0-beta.11

4 years ago

1.0.0-beta.10

4 years ago

1.0.0-beta.9

4 years ago

1.0.0-beta.8

4 years ago

1.0.0-beta.6

4 years ago

1.0.0-beta.7

4 years ago

1.0.0-beta.4

4 years ago

1.0.0-beta.5

4 years ago

1.0.0-beta.3

4 years ago

1.0.0-beta.2

4 years ago

1.0.0-beta.1

4 years ago

1.0.0-beta.0

4 years ago

1.0.0-alpha.23

4 years ago

1.0.0-alpha.22

4 years ago

1.0.0-alpha.21

4 years ago

1.0.0-alpha.20

4 years ago

1.0.0-alpha.19

4 years ago

1.0.0-alpha.18

4 years ago

1.0.0-alpha.17

4 years ago

1.0.0-alpha.16

4 years ago

1.0.0-alpha.15

4 years ago

1.0.0-alpha.14

4 years ago

1.0.0-alpha.13

4 years ago

1.0.0-alpha.12

4 years ago

1.0.0-alpha.11

4 years ago

1.0.0-alpha.10

4 years ago

1.0.0-alpha.9

4 years ago

1.0.0-alpha.8

4 years ago

1.0.0-alpha.7

4 years ago

1.0.0-alpha.6

4 years ago

1.0.0-alpha.5

4 years ago

1.0.0-alpha.4

4 years ago

1.0.0-alpha.3

4 years ago

1.0.0-alpha.2

4 years ago

1.0.0-alpha.1

4 years ago

1.0.0-alpha.0

4 years ago

0.11.2

4 years ago

0.11.0

4 years ago

0.10.2

5 years ago

0.10.1

5 years ago

0.10.0

5 years ago

0.9.1

5 years ago

0.9.0

5 years ago

0.8.0

5 years ago

0.7.1-alpha.2

5 years ago

0.7.1-alpha.1

5 years ago

0.7.0-alpha.2

5 years ago

0.7.0-alpha.1

5 years ago

0.7.0

5 years ago

0.6.0

5 years ago

0.5.0

5 years ago

0.4.0

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.1.0

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago