基于 ant design 〠dva〠antd-form-mate çš„å¢žåˆ æ”¹æŸ¥é¡µé¢ç»„件。
由于没有打包å‘布的ç»éªŒï¼Œæ‰€ä»¥åœ¨ 2.0.0 之å‰çš„版本除了一些未知的 bug 外,å¯èƒ½ä¼šå˜åœ¨ä¸€äº›å…¼å®¹æ€§é—®é¢˜ã€‚æ¤æ¬¡é‡æž„到 2.0.0 åŽï¼Œç§»é™¤äº†ä¾èµ– antd-form-mate
。åŽç»å‘包当慎é‡èµ·è§ã€‚
组件内部调用以下 effect
函数:
fetch
èŽ·å–æ•°æ®åˆ—表detail
获å–对象详情create
创建对象update
更新对象delete
åˆ é™¤å¯¹è±¡
以下 reducer
函数:
_saveDetail
å…³é—弹窗时,清空对象详情
并注入以下数æ®å—段:
data
形如{ list: any[], pagination: any }
, 分页器属性å‚考Pagination
组件detail
[å¯é€‰]å¯¹è±¡è¯¦æƒ…å—æ®µ
基于æ¤å°è£…了 dva-base-models,é…置相关请求函数å³å¯ä½¿ç”¨ã€‚å‚考 Demo 。
通过 ConfigProvider
组件é…ç½® createFormItemsFn
,组件内部关于创建表å•的地方都会调用该方法,å¯ç›´æŽ¥ä»Ž antd-form-mate 导出 createFormItems
ä¼ å…¥å³å¯ã€‚
基于 ant-deisgn-pro-v2 ä¸çš„ StandardTable 组件。
- 默认开å¯
hideOnSinglePage
- 间隔行ç€è‰²
- 多选功能å¯é€‰ï¼Œé€šè¿‡
checkable
控制
与 StandardTable ç±»ä¼¼ï¼Œåªæ˜¯å°†å®¹å™¨ä»Ž Table 替æ¢ä¸º List ,并自定义组件(比如 Card ï¼‰æ¸²æŸ“æ¯æ¡è®°å½•。支æŒå¤šé€‰ã€‚
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
renderItem |
用于自定义渲染组件 | ({ record, actions, recordSelection, checkable }) => React.ReactNode |
- |
DetailDrawer 详情抽屉
基于 antd-form-mate å®žçŽ°çš„è¯¦æƒ…è¡¨å•æŠ½å±‰ï¼Œå‚æ•°å®šä¹‰å¯å‚è§ DetailFormDrawer/index.tsx 。开å¯é˜²æŠ–。
DetailModal è¯¦æƒ…æ¨¡æ€æ¡†
基于 antd-form-mate å®žçŽ°çš„è¯¦æƒ…æ¨¡æ€æ¡†ï¼Œå‚数定义å¯å‚è§ DetailFormModal/index.tsx 。开å¯é˜²æŠ–。
QueryPanel æŸ¥è¯¢é¢æ¿
基于 antd-form-mate å®žçŽ°çš„æŸ¥è¯¢é¢æ¿ç»„件,具体实现å¯å‚考 QueryPanel/index.tsx ,åªéœ€ä¼ 入表å•é…置和 onSearch
方法å³å¯ä½¿ç”¨ã€‚åŒæ—¶æä¾›äº†é‡ç½®è¡¨å•åŽçš„ onReset
函数。
为包å«åœ¨ Curd
ä¸çš„å组件注入 __curd__
的实例属性
state
ä¸ä¿å˜äº†å½“å‰é¡µé¢çš„æŸ¥è¯¢å‚数:
searchForm
è¡¨å•æ•°æ®searchParams
分页器,过滤器,排åºå™¨å‚æ•°
还有一个 handleSearch
方法å¯ä¾›ç›´æŽ¥ï¼ˆ innerRef
)调起å½
8000
“å‰é¡µé¢æ•°æ®æŸ¥è¯¢æŽ¥å£ä»¥ä¾›åˆ·æ–°æ•°æ®ä½¿ç”¨ã€‚
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
modelName |
dva ä¸ model çš„å称空间 | string |
- |
data |
å¯¹è±¡åˆ†é¡µæ•°æ® | { list: T[]; pagination?: any } |
- |
dipatch |
dva 注入的 dispatch 函数 | Function |
- |
wrapper |
ç»„ä»¶è¢«åŒ…è£¹çš„å®¹å™¨ï¼Œé»˜è®¤ä¸ºæ— è¾¹æ¡† Card |
React.ComponentClass | null |
- |
createFormItemsFn |
创建表å•项的函数 | (form: WrappedFormUtils) => (itemsConfig: ItemConfig[], formLayout?: Layout) => JSX.Element[] |
() => () => ([]) |
æŸ¥è¯¢é¢æ¿ç»„件。
通过 __curd__
实例属性为 Curd
组件更新 searchForm
。
如果需è¦ä¸»åŠ¨ä¸º Curd.Query
组件的表å•赋值,通过 ref
方法拿到 Curd.Query
的实例,å†é€šè¿‡ ref.form
拿到表å•对象å³å¯ã€‚
å¦å¤–,如果需è¦å¤–部直接调起新的æœç´¢ï¼Œå¯é€šè¿‡ ref
拿到对象实例åŽè°ƒç”¨ setFieldsValueAndSearch
å¹¶ä¼ å…¥æŸ¥è¯¢è¡¨å•å³å¯è°ƒèµ·æœç´¢ï¼Œè‡ªåŠ¨æ¸…ç©ºæœªè¾“å…¥çš„å€¼ã€‚
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
queryArgsConfig |
æŸ¥è¯¢å‚æ•°é…置,å‚考 index.js | any[] |
[] |
为包å«åœ¨ CurdBox
ä¸çš„å组件注入 __curdBox__
的实例属性
通过 __curd__
实例属性为 Curd
组件更新 searchParams
。
å¢žåˆ æ”¹æŸ¥å®¹å™¨ï¼Œä¸ºå组件æä¾›å¯¹è±¡ç›¸å…³è¯¦æƒ…的展示和编辑弹窗,以åŠå¯¹è±¡æ“ä½œç›¸å…³çš„å¢žåˆ æ”¹ç‰æ“作( Actions )。
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
createTitle |
新建窗å£åç§° | string |
'新建对象' |
detailTitle |
详情窗å£åç§° | string |
'对象详情' |
updateTitle |
编辑窗å£åç§° | string |
'编辑对象' |
fetchLoading |
请求列表 loading | boolean |
- |
createLoading |
创建 model loading | boolean |
- |
detailLoading |
请求 model 详情 loading | boolean |
- |
updateLoading |
æ›´æ–° model loading | boolean |
- |
deleteLoading |
åˆ é™¤ model loading | boolean |
- |
createButtonName |
新建按钮å称,为空时éšè—按钮 | string | false |
'新建' |
popup |
弹窗类型 | 'modal' | 'drawer' |
- |
popupProps |
弹窗é…ç½®ï¼Œæ ¹æ® popup é…ç½® |
CustomDetailFormDrawerProps | CustomDetailFormModalProps | - |
setFormItemsConfig |
é…ç½®è¡¨å•æ•°æ® | (detail: {}, mode: 'create' | 'detail' | 'update', form) => any[] |
- |
afterPopupClose |
å…³é—弹窗åŽå›žè°ƒå‡½æ•° | () => void |
- |
interceptors |
拦截器 | interceptors | - |
detail |
model 详情 | any |
- |
actionsConfig |
è¡¨æ ¼é…ç½® | [actionsConfig](#actionsConfig) | false | null |
- |
showOperators |
是å¦å±•示æ“作æ | boolean |
- |
extraOperators |
扩展类似新增按钮的æ“作æ | JSX.Element[] |
- |
dipatch |
dva 注入的 dispatch 函数 | Function |
- |
autoFetch |
æ¸²æŸ“åŽæ˜¯å¦è‡ªåЍå‘起请求,如果需è¦é…ç½®é¢å¤–çš„æŸ¥è¯¢å‚æ•°ï¼Œå¯ç½®ä¸º false 手动自定义å‘èµ·åˆå§‹åŒ–请求 | boolean |
true |
reSearchAfterUpdate |
æ›´æ–° model 是å¦è‡ªåŠ¨åˆ·æ–°åˆ—è¡¨ | boolean |
false |
__curd__ |
控制 Curd 相关属性 | Curd 实例 | - |
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
updateFieldsValue |
è¡¨å•æ•°æ®æ‹¦æˆªå¤„ç†ï¼Œç±»ä¼¼æ—¶é—´åŒºé—´è¿™æ ·çš„æ•°æ®ï¼Œéœ€è¦å•独处ç†åŽå†æäº¤ | (fieldsValue: any, mode?: 'create' | 'update') => any |
- |
handleCreateClick |
新建点击事件拦截 | () => boolean | undefined |
- |
handleDetailClick |
详情点击事件拦截,å¯é€šè¿‡è·¯ç”±è·³è½¬åˆ°è‡ªå®šä¹‰çš„å¯¹è±¡è¯¦æƒ…é¡µé¢ | (record: any) => boolean | undefined |
- |
handleUpdateClick |
编辑点击事件拦截 | (record: any) => boolean | undefined |
- |
handleDeleteClick |
åˆ é™¤ç‚¹å‡»äº‹ä»¶æ‹¦æˆª | (record: any) => void |
- |
handleFilterAndSort |
过滤器和排åºå™¨å¤„ç†ï¼Œå¯ç”¨äºŽä½¿è¿‡æ»¤å™¨å’Œåˆ†é¡µå™¨å—控 | (filtersArg: Record<keyof any, string[]>, sorter: SorterResult<any>, extra?: TableCurrentDataSource<any>) => any |
- |
傿•° | 说明 | 类型 | 默认值 |
---|---|---|---|
showActionsCount |
除更多外需è¦å±•示的æ“作个数 | number |
3 |
extraActions |
除 详情(4),编辑(8ï¼‰ï¼Œåˆ é™¤ï¼ˆ12) 外,å¯è‡ªè¡Œé…ç½®é¢å¤–æ“作。注æ„ï¼Œæ•°å—æ˜¯æ“作的 key ï¼Œæ ¹æ® key ä¸åŒï¼Œä¼šæŒ‰å‡åºæŽ’列 |
ActionType | - |
confirmKeys |
需è¦å¼¹å‡ºç¡®è®¤çª—å£çš„ key 数组 |
(number | [number, (record?: any) => string])[] |
[12] |
confirmProps |
é¢å¤–çš„ Popconfirm é…ç½® | PopconfirmProps |
- |
hideActions |
éšè—æ“作的 key 数组 |
number[] | ((record?: any) => void | number[]) |
- |
disabledActions |
ç¦ç”¨æ“作的 key 数组 |
(record?: any) => void | number[] |
- |
detailActionTitle |
详情 action åç§° | string |
'详情' |
updateActionTitle |
编辑 action åç§° | string |
'编辑' |
deleteActionTitle |
åˆ é™¤ action åç§° | string |
'åˆ é™¤' |
handle**Click
事件(除handleDeleteClick
事件外,handleDeleteClick
ç›´æŽ¥ä¸æ–)默认ä¸ä¼šä¸æ–åŽç»æµç¨‹ï¼Œå¦‚果需è¦ä¸æ–,return true
å³å¯ã€‚- 如果对象详情ä¸éœ€è¦å†è¯·æ±‚接å£ï¼Œä¸æ³¨å…¥
detail
或者detailLoading
å³å¯ã€‚
ç”± CurdBox å°è£… StandardTable 而æˆã€‚
ç”± CurdBox å°è£… StandardList 而æˆã€‚