@hzab/data-model 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +59 -7
  2. package/package.json +1 -1
  3. package/src/hooks.js +15 -6
package/README.md CHANGED
@@ -74,15 +74,67 @@ const listDM = new DataModel({
74
74
  // 批量删除接口 delete 出参枚举函数
75
75
  multipleDeleteResMap,
76
76
  });
77
- ```
78
-
79
- ## API
80
77
 
81
- ### InfoPanel Attributes
78
+ // useDataModel,解决 hooks 写法 model 重复实例化导致 query 丢失的问题
79
+ function Demo({ orgId }) {
80
+ // 第一个入参同 new DataModel,第二个参数为需要监听的动态参数数组
81
+ const model = useDataModel(
82
+ // 初始值
83
+ {
84
+ getListApi: "/getList",
85
+ query: { orgId },
86
+ },
87
+ {
88
+ // 动态 query 数据
89
+ effectQuery: { orgId },
90
+ // 动态数据监听的值
91
+ effectTargets: [orgId],
92
+ },
93
+ );
94
+ return <ListRender model={model} />;
95
+ }
96
+ ```
82
97
 
83
- | 参数 | 类型 | 必填 | 默认值 | 说明 |
84
- | ---- | ------ | ---- | ------ | ---- |
85
- | | string | | - | |
98
+ ## DataModel
99
+
100
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
101
+ | -------------------- | -------- | ---- | ------ | ------------------------------------------- |
102
+ | query | Object | 否 | - | query 参数对象 |
103
+ | createApi | string | 否 | - | post 接口地址 |
104
+ | getApi | string | 否 | - | 详情 get 接口地址 |
105
+ | getListApi | string | 否 | - | 列表 get 接口地址 |
106
+ | updateApi | string | 否 | - | put 接口地址 |
107
+ | deleteApi | string | 否 | - | delete 接口地址 |
108
+ | multipleDeleteApi | string | 否 | - | 批量删除 delete 接口地址 |
109
+ | createMap | Function | 否 | - | createApi 接口提交前的处理函数 |
110
+ | getMap | Function | 否 | - | getApi 接口返回结果的处理函数 |
111
+ | getListMap | Function | 否 | - | getListApi 接口返回结果的处理函数 |
112
+ | getListFunc | Function | 否 | - | 自定义的列表请求函数,优先级高于 getListApi |
113
+ | updateMap | Function | 否 | - | updateApi 接口提交前的处理函数 |
114
+ | axios | Object | 否 | - | axios 实例对象 |
115
+ | axiosConf | Object | 否 | - | axios 相关配置 |
116
+ | getListReqMap | Function | 否 | - | 列表接口 get 入参枚举函数 |
117
+ | getListResMap | Function | 否 | - | 列表接口 get 出参枚举函数 |
118
+ | getReqMap | Function | 否 | - | 详情接口 get 入参枚举函数 |
119
+ | getResMap | Function | 否 | - | 详情接口 get 出参枚举函数 |
120
+ | createReqMap | Function | 否 | - | 新增接口 get 入参枚举函数 |
121
+ | createResMap | Function | 否 | - | 新增接口 get 出参枚举函数 |
122
+ | updateReqMap | Function | 否 | - | 编辑接口 get 入参枚举函数 |
123
+ | updateResMap | Function | 否 | - | 编辑接口 get 出参枚举函数 |
124
+ | deleteReqMap | Function | 否 | - | 删除接口 get 入参枚举函数 |
125
+ | deleteResMap | Function | 否 | - | 删除接口 get 出参枚举函数 |
126
+ | multipleDeleteReqMap | Function | 否 | - | 批量删除接口 get 入参枚举函数 |
127
+ | multipleDeleteResMap | Function | 否 | - | 批量删除接口 get 出参枚举函数 |
128
+
129
+ ## useDataModel
130
+
131
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
132
+ | ----------------- | ------ | ---- | ------ | -------------------------------- |
133
+ | initParams | Object | 是 | - | 初始参数,通同 DataModel |
134
+ | opt | Object | 否 | - | 配置参数 |
135
+ | opt.effectTargets | Object | 否 | - | 动态数据监听的目标 |
136
+ | opt.effectParams | Object | 否 | - | 动态的 params 数据,包含了 query |
137
+ | opt.effectQuery | Object | 否 | - | 动态的 query 数据 |
86
138
 
87
139
  # 组件开发流程
88
140
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/data-model",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "data model",
5
5
  "main": "src",
6
6
  "scripts": {
package/src/hooks.js CHANGED
@@ -5,14 +5,23 @@ import DataModel from "./data-model";
5
5
 
6
6
  /**
7
7
  * 解决 hooks 重复实例化导致 query 丢失的问题
8
- * @param {*} params
9
- * @param {*} effects
8
+ * @param {Object} initParams 初始参数
9
+ * @param {Object} opt
10
+ * @param {Object} opt.effectTargets 动态数据监听的目标
11
+ * @param {Object} opt.effectParams 动态的 params 数据,包含了 query
12
+ * @param {Object} opt.effectQuery 动态的 query 数据
10
13
  * @returns
11
14
  */
12
- export const useDataModel = function (params = {}, effects = []) {
13
- const model = useRef(new DataModel(params));
15
+ export const useDataModel = function (initParams = {}, opt = {}) {
16
+ const model = useRef(new DataModel(initParams));
14
17
  return useMemo(() => {
15
- merge(model.current, params);
18
+ const { effectParams, effectQuery } = opt || {};
19
+ if (effectParams) {
20
+ merge(model.current, effectParams);
21
+ }
22
+ if (effectQuery) {
23
+ merge(model.current.query, effectQuery);
24
+ }
16
25
  return model.current;
17
- }, effects);
26
+ }, opt.effectTargets || []);
18
27
  };