@hzab/list-render 1.9.1 → 1.9.2-beta1

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,4 +1,8 @@
1
- # @hzab/list-render@1.9.1
1
+ # @hzab/list-render@1.9.3
2
+
3
+ feat: 列表请求取消上一次列表请求,解决数据返回先后顺序导致展示异常问题
4
+
5
+ # @hzab/list-render@1.9.2
2
6
 
3
7
  fix: Drawer 模式 首次编辑 scenario 状态不正确问题修复
4
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/list-render",
3
- "version": "1.9.1",
3
+ "version": "1.9.2-beta1",
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.2",
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.2",
44
44
  "@hzab/form-render": ">=1.0.0",
45
45
  "@hzab/schema-descriptions": ">=1.0.0",
46
46
  "antd": "4.x",
@@ -36,8 +36,8 @@ export function FormModal(props, parentRef) {
36
36
  const FormSlot = useMemo(() => props.Slots?.FormSlot, [props.Slots?.FormSlot]);
37
37
 
38
38
  function show(formData = props.formInitialValues, title, scenario = "create") {
39
- setOpen(true);
40
39
  scenarioRef.current = scenario || "create";
40
+ setOpen(true);
41
41
  // 处理 formRef.current 为 undefined 的问题
42
42
  if (formRef.current?.formRender?.setValues) {
43
43
  formRef.current?.formRender?.setValues(formData);
@@ -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,8 +131,20 @@ const ListRender = forwardRef(function (props, parentRef) {
129
131
 
130
132
  model.query = mergedQueries;
131
133
 
134
+ // 取消上一次请求
135
+ getListSourceRef.current?.cancel("取消上一次请求");
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) => {
135
149
  setList(res.list);
136
150
  setTotal(res.pagination?.total);
@@ -138,6 +152,10 @@ const ListRender = forwardRef(function (props, parentRef) {
138
152
  setListLoading(false);
139
153
  })
140
154
  .catch((err) => {
155
+ if (axios.isCancel(error)) {
156
+ console.log("请求已取消:", error.message);
157
+ return;
158
+ }
141
159
  console.error(err);
142
160
  handleMessage(err._message);
143
161
  setListLoading(false);