@hzab/list-render 1.9.2 → 1.9.3

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # @hzab/list-render@1.9.3
2
+
3
+ feat: 列表请求取消上一次列表请求,解决数据返回先后顺序导致展示异常问题
4
+
1
5
  # @hzab/list-render@1.9.2
2
6
 
3
7
  fix: Drawer 模式 首次编辑 scenario 状态不正确问题修复
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/list-render",
3
- "version": "1.9.2",
3
+ "version": "1.9.3",
4
4
  "description": "",
5
5
  "main": "src",
6
6
  "scripts": {
@@ -20,7 +20,7 @@
20
20
  "license": "ISC",
21
21
  "devDependencies": {
22
22
  "@ant-design/icons": "^4.8.1",
23
- "@hzab/data-model": "^1.6.0",
23
+ "@hzab/data-model": "^1.7.4",
24
24
  "@hzab/form-render": "^1.1.5",
25
25
  "@hzab/schema-descriptions": "^1.0.0",
26
26
  "@hzab/webpack-config": "^0.7.2",
@@ -40,7 +40,7 @@
40
40
  "@formily/core": "2.3.1",
41
41
  "@formily/react": "2.3.1",
42
42
  "@formily/reactive-react": "2.3.1",
43
- "@hzab/data-model": ">=1.5.0",
43
+ "@hzab/data-model": ">=1.7.4",
44
44
  "@hzab/form-render": ">=1.0.0",
45
45
  "@hzab/schema-descriptions": ">=1.0.0",
46
46
  "antd": "4.x",
@@ -5,6 +5,7 @@ model 不要定义在组件外部,避免出现 query 异常的情况。
5
5
  import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
6
6
  import { Button, message } from "antd";
7
7
  import _ from "lodash";
8
+ import axios, { getCancelTokenSource } from "@hzab/data-model/src/axios";
8
9
 
9
10
  import QueryRender from "./query-render";
10
11
  import Pagination from "./pagination-render";
@@ -48,6 +49,7 @@ const ListRender = forwardRef(function (props, parentRef) {
48
49
  const formQueryRef = useRef({});
49
50
  const paginationQueryRef = useRef({ pageNum: 1, pageSize: 10 });
50
51
  const useFormData = _useFormData ?? dialogConf.useFormData ?? modalConf?.useFormData;
52
+ const getListSourceRef = useRef();
51
53
 
52
54
  useImperativeHandle(parentRef, () => ({
53
55
  getList,
@@ -129,18 +131,35 @@ const ListRender = forwardRef(function (props, parentRef) {
129
131
 
130
132
  model.query = mergedQueries;
131
133
 
134
+ // 取消上一次请求
135
+ getListSourceRef.current?.cancel({ code: 601, message: "取消上一次请求" });
136
+
137
+ // 重新获取 source
138
+ getListSourceRef.current = getCancelTokenSource();
139
+
132
140
  model
133
- ?.getList(mergedQueries)
141
+ ?.getList(
142
+ mergedQueries,
143
+ {},
144
+ {
145
+ cancelToken: getListSourceRef.current?.token,
146
+ },
147
+ )
134
148
  .then((res) => {
149
+ getListSourceRef.current = null;
135
150
  setList(res.list);
136
151
  setTotal(res.pagination?.total);
137
152
  props.onGetListEnd && props.onGetListEnd(res);
138
153
  setListLoading(false);
139
154
  })
140
155
  .catch((err) => {
141
- console.error(err);
142
- handleMessage(err._message);
156
+ if (axios.isCancel(err)) {
157
+ console.info(`请求已取消:`, "", err.message);
158
+ return Promise.reject(err);
159
+ }
160
+ handleMessage(err?._message);
143
161
  setListLoading(false);
162
+ return Promise.reject(err);
144
163
  });
145
164
  }
146
165
 
@@ -214,6 +233,7 @@ const ListRender = forwardRef(function (props, parentRef) {
214
233
  .catch((err) => {
215
234
  console.error("err", err);
216
235
  handleMessage(err._message);
236
+ return Promise.reject(err);
217
237
  });
218
238
  } else {
219
239
  handleDetail(row, row[idKey]);
@@ -241,6 +261,7 @@ const ListRender = forwardRef(function (props, parentRef) {
241
261
  .catch((err) => {
242
262
  console.error("err", err);
243
263
  handleMessage(err._message);
264
+ return Promise.reject(err);
244
265
  });
245
266
  } else {
246
267
  handleEdit(row, row[idKey]);
@@ -291,6 +312,7 @@ const ListRender = forwardRef(function (props, parentRef) {
291
312
  })
292
313
  .catch((err) => {
293
314
  handleMessage(err._message);
315
+ return Promise.reject(err);
294
316
  });
295
317
  }
296
318