@hzab/data-model
Advanced tools
Comparing version 0.2.1 to 0.2.2
{ | ||
"name": "@hzab/data-model", | ||
"version": "0.2.1", | ||
"version": "0.2.2", | ||
"description": "data model", | ||
@@ -5,0 +5,0 @@ "main": "src", |
@@ -77,12 +77,64 @@ # @hzab/data-model | ||
}); | ||
// useDataModel,解决 hooks 写法 model 重复实例化导致 query 丢失的问题 | ||
function Demo({ orgId }) { | ||
// 第一个入参同 new DataModel,第二个参数为需要监听的动态参数数组 | ||
const model = useDataModel( | ||
// 初始值 | ||
{ | ||
getListApi: "/getList", | ||
query: { orgId }, | ||
}, | ||
{ | ||
// 动态 query 数据 | ||
effectQuery: { orgId }, | ||
// 动态数据监听的值 | ||
effectTargets: [orgId], | ||
}, | ||
); | ||
return <ListRender model={model} />; | ||
} | ||
``` | ||
## API | ||
## DataModel | ||
### InfoPanel Attributes | ||
| 参数 | 类型 | 必填 | 默认值 | 说明 | | ||
| -------------------- | -------- | ---- | ------ | ------------------------------------------- | | ||
| query | Object | 否 | - | query 参数对象 | | ||
| createApi | string | 否 | - | post 接口地址 | | ||
| getApi | string | 否 | - | 详情 get 接口地址 | | ||
| getListApi | string | 否 | - | 列表 get 接口地址 | | ||
| updateApi | string | 否 | - | put 接口地址 | | ||
| deleteApi | string | 否 | - | delete 接口地址 | | ||
| multipleDeleteApi | string | 否 | - | 批量删除 delete 接口地址 | | ||
| createMap | Function | 否 | - | createApi 接口提交前的处理函数 | | ||
| getMap | Function | 否 | - | getApi 接口返回结果的处理函数 | | ||
| getListMap | Function | 否 | - | getListApi 接口返回结果的处理函数 | | ||
| getListFunc | Function | 否 | - | 自定义的列表请求函数,优先级高于 getListApi | | ||
| updateMap | Function | 否 | - | updateApi 接口提交前的处理函数 | | ||
| axios | Object | 否 | - | axios 实例对象 | | ||
| axiosConf | Object | 否 | - | axios 相关配置 | | ||
| getListReqMap | Function | 否 | - | 列表接口 get 入参枚举函数 | | ||
| getListResMap | Function | 否 | - | 列表接口 get 出参枚举函数 | | ||
| getReqMap | Function | 否 | - | 详情接口 get 入参枚举函数 | | ||
| getResMap | Function | 否 | - | 详情接口 get 出参枚举函数 | | ||
| createReqMap | Function | 否 | - | 新增接口 get 入参枚举函数 | | ||
| createResMap | Function | 否 | - | 新增接口 get 出参枚举函数 | | ||
| updateReqMap | Function | 否 | - | 编辑接口 get 入参枚举函数 | | ||
| updateResMap | Function | 否 | - | 编辑接口 get 出参枚举函数 | | ||
| deleteReqMap | Function | 否 | - | 删除接口 get 入参枚举函数 | | ||
| deleteResMap | Function | 否 | - | 删除接口 get 出参枚举函数 | | ||
| multipleDeleteReqMap | Function | 否 | - | 批量删除接口 get 入参枚举函数 | | ||
| multipleDeleteResMap | Function | 否 | - | 批量删除接口 get 出参枚举函数 | | ||
| 参数 | 类型 | 必填 | 默认值 | 说明 | | ||
| ---- | ------ | ---- | ------ | ---- | | ||
| | string | 否 | - | | | ||
## useDataModel | ||
| 参数 | 类型 | 必填 | 默认值 | 说明 | | ||
| ----------------- | ------ | ---- | ------ | -------------------------------- | | ||
| initParams | Object | 是 | - | 初始参数,通同 DataModel | | ||
| opt | Object | 否 | - | 配置参数 | | ||
| opt.effectTargets | Object | 否 | - | 动态数据监听的目标 | | ||
| opt.effectParams | Object | 否 | - | 动态的 params 数据,包含了 query | | ||
| opt.effectQuery | Object | 否 | - | 动态的 query 数据 | | ||
# 组件开发流程 | ||
@@ -89,0 +141,0 @@ |
@@ -8,12 +8,21 @@ import { useMemo, useRef } from "react"; | ||
* 解决 hooks 重复实例化导致 query 丢失的问题 | ||
* @param {*} params | ||
* @param {*} effects | ||
* @param {Object} initParams 初始参数 | ||
* @param {Object} opt | ||
* @param {Object} opt.effectTargets 动态数据监听的目标 | ||
* @param {Object} opt.effectParams 动态的 params 数据,包含了 query | ||
* @param {Object} opt.effectQuery 动态的 query 数据 | ||
* @returns | ||
*/ | ||
export const useDataModel = function (params = {}, effects = []) { | ||
const model = useRef(new DataModel(params)); | ||
export const useDataModel = function (initParams = {}, opt = {}) { | ||
const model = useRef(new DataModel(initParams)); | ||
return useMemo(() => { | ||
merge(model.current, params); | ||
const { effectParams, effectQuery } = opt || {}; | ||
if (effectParams) { | ||
merge(model.current, effectParams); | ||
} | ||
if (effectQuery) { | ||
merge(model.current.query, effectQuery); | ||
} | ||
return model.current; | ||
}, effects); | ||
}, opt.effectTargets || []); | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20913
455
182