uca/economy

Zero Ui 中的Web组件

1.组件使用

组使用的代码如下:

import { XXX } from 'web';

// .....
return (
     <XXX/>
)

economy组件层位于ux工具之上,可直接执行如下代码

import Ux from 'ux';

2.组件文档标记

  1. 属性props:直接从上层组件中继承过来的属性。
  2. 状态state:当前组件执行componentDidMount构造的状态。

3.组件列表

生命周期中的单个标记分别对应Hoc生命周期,Mount初始化,Update更新三个生命周期。

|组件名|生命周期|相关Ant组件|className|说明| |:---|:---|---|:---|:---|:---| |* Dialog|x o o|<Modal/>|ux_dialog
web-dynamic-dialog|动态弹出框专用组件,可配置不同弹出框。| |* DialogButton|x o x|<Button/>
-- <Modal/>
-- <Drawer/>
-- <Popover/>|ux_dialog-button-header|带子组件的按钮,可渲染按钮内组件。| |* DialogMenu|x o x|<Dropdown/>
--<Menu/>
--<Button/>||包含子组件专用的菜单执行。| |* PageCard|o o x|<Card/>|web-card|卡片组件容器。| |* Rectangle|x x x|<fieldset/>|web-rectangle|「Html」专用HTML矩形元素。| |ColumnUser|x o x|<Fragment/>||表格中的列渲染专用<Table/>执行。| |G6Editor|x o x|复杂元素|web-g6-editor|拓扑图编辑器| |G6Viewer|x o x|复杂元素|web-g6-viewer|拓扑图查看器| |Graphic2|x o o|<div/>||G2渲染图信息。| |LoadingAlert|x x x|<Alert/>|web-alert-iconlist
web-alert-list
web-alert-text|警告信息专用组件,支持多行文本、图标计算、多数据格式、直接配置模式。| |LoadingContent|o x x|<Spin/>|web-loading|加载效果专用组件,支持组件/页面/区域三种。| |Navigation|x x x|<Breadcrumb/>|web-navigation|面包屑导航组件。| |NavSwallow|x x x|<div/>|web-nav-swallow|燕尾导航专用组件。|

4.设计原则

  1. 属性传入过程中的所有内容(源 = props),都是通过编程方式传入,优先级最高,它通常会覆盖Zero Ui解析过后的默认行为。
  2. 只要存在状态数据,在render中都会调用Ux.xtReady方法执行加载完成后的第一个render,该操作可防止异步结果未完成导致的渲染错误。

4.1. 特殊说明

  1. Dialog中的web-dynamic-dialog是遗留系统使用的className,新系统都会使用ux_dialog来实现,暂时未重构。
  2. 组件中带*的表示当前组件支持children属性,即组件本身为容器组件。
  3. FormDesigner不提供文档说明,因为它主要存在于Ox中的配置模块,不属于标准操作,通常是直接使用。

4.2. 基础文件规范

4.2.1. 文件规范

文件 说明
UI.js 主入口源代码文件。
Op.js 事件专用源代码文件。
Web.jsx Jsx渲染专用函数。

4.2.2. 函数规范

特定函数 说明
componentCt 构造函数,constructor函数专用。
componentInit 初始化函数,componentDidMount函数专用。
componentUp 更新函数,componentDidUpdate函数专用。
renderXXX Jsx渲染专用函数。
yiXXX 初始化状态专用方法(子方法、主方法)。
yoXXX 渲染组件专用计算方法。

4.2.3. 属性状态规范

变量 说明
config props 组件配置数据。
data props 组件核心数据(一般是业务数据)。
rxInject props 「开发」注入专用,修改配置用。
$submitting props 防重复提交的专用属性,$submitting = true表示正在提交。
$ready state 加载完成专用属性。

Methods

(static) * PageCard()

「组件」PageCard

import { PageCard } from 'web';

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
Ok Ok x

2. 属性说明

属性名 二级属性 类型 说明
children props Jsx React中专用的children子元素信息。
reference props React 父引用,遵循Zero Ui的规范,该变量为固定变量,引用父组件。
className props String 外置传入className,计算最终的风格专用属性,默认web-card
$key props String 读取外层绑定资源文件,调用Ux.fromXX作用于reference,默认读取_page节点。
$submitting props Boolean 是否处于提交状态,如果提交状态,则会计算按钮的loading属性。
$title props String 卡片标题文本数据,优先使用$title属性,
$leftVisible props Boolean 是否隐藏左边按钮。
$rightVisible props Boolean 是否隐藏右边按钮。
$backVisible props Boolean 是否隐藏返回按钮。
$disabled props Object 按钮禁用状态计算,根据不同的状态禁用对应按钮。
$extra props Jsx 是否执行extra属性的注入,计算extraContent部分。
rxInject props Function 「开发」注入配置专用函数。
$config left state Array 卡片组件左侧按钮。
$config right state Array 卡片组件右侧按钮。

3. 组件核心点

3.1. 工具栏

整个PageCard工具栏分为三部分

关闭
左侧按钮区间 右侧按钮区间 关闭按钮区间
$leftVisible $rightVisible $backVisible

如果传入了$extra变量,那么这个Jsx元素会替换掉$rightVisible和$backVisible两个区域的组件。

3.2. 防重复提交

左侧和右侧的按钮通常会使用Ux.connectId方法触发按钮点击动作,并且会根据$submitting的值来判断 当前按钮是否处于加载状态,即使是不在当前组件的子组件中,也可以直接使用该值来渲染按钮的加载。

3.3. 禁用状态

$config变量中存储了leftright中每一个按钮的key信息,而$disabled则存储了禁用启用状态(外置传入)。

假设$disabled包含了值:

{
    "key1": true,
    "key2": true
}

上述配置会禁用key1key2的按钮信息。

(static) * Rectangle()

「组件」Rectangle

import { Rectangle } from 'web';

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x x x

2. 属性说明

属性名 二级属性 类型 说明
children props Jsx React中专用的children子元素信息。
config props Object
config title props String <fieldset/>元素中的legend专用。

(static) G6Editor()

「组件」G6Editor

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x Ok x

2. 属性说明

属性名 二级属性 类型 说明
$gEvent props GEvent 图综合对象。
$ready state Boolean 标识当前组件已经加载完成。

(static) G6Viewer()

「组件」G6Viewer

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x Ok x

2. 属性说明

属性名 二级属性 类型 说明
$gEvent props GEvent 图综合对象。
$ready state Boolean 标识当前组件已经加载完成。

(static) Graphic2()

「组件」Graphic2

import { Graphic2 } from 'web';

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x Ok Ok

2. 属性说明

属性名 二级属性 类型 说明
config props Object g2图形专用配置数据。
data props Array 渲染图形专用的数据。
$gid props String 当前g2图形的<div/>的id属性,g2的API专用。
$gFn props Function 构造配置的专用函数。
$g2 state Object 最终计算出来的配置信息。
$ready state Boolean 标识当前组件已经加载完成。

3. 组件核心点

3.1. $gFn函数

$gFn是一个必须传入的函数,用于构造graphic引用,这个引用可直接调用下边API执行图形渲染, 目前可绑定的函数如:

  • Ux.g2Bar:饼图构造函数。

(static) NavSwallow()

「组件」NavSwallow

import { NavSwallow } from 'web';

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x x x

2. 属性说明

属性名 二级属性 类型 说明
$common props Boolean 是否普通模式。
$steps title props Array 当前步骤的标题信息。
$current props Number 激活的当前步骤,从0开始,配合索引计算。

3. 组件核心点

3.1. 特定className的值

$common属性 节点类型 className值
true 开始节点 step start-common
true 中间节点 step-middle
true 结束节点 step-middle
false 开始节点 step
false 中间节点 step-middle
false 结束节点 step-end
无关 激活节点 step-active

(static) Navigation()

「组件」Navigation

旧名称依然可用:PagerHeader

import { PagerHeader } from 'web';     // 旧版本
import { Navigation } from 'web';

1. 生命周期

Hoc高阶周期 Mount初始化 Update更新
x x x

2. 属性说明

属性名 二级属性 类型 说明
$router props DataRouter 特殊属性$router用于执行路由操作的专用对象。
$navs props Array 每个元素最终用于aiLink操作。

面包屑导航渲染,通常用于主界面的二级面包屑导航,链接会禁用<a/>href导航而采用react-router中的路由导航功能。

(static) RowStar()

「组件」RowStar