parsec-hooks 0.0.159 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,7 +17,7 @@ export interface LoadMoreOptions {
17
17
  */
18
18
  customSetLoading?: (loading: boolean) => void;
19
19
  }
20
- export default function <D>(getListFn: LoadMoreGetListFn<D>, { defaultLimit, defaultPage, needGet, cacheKey, customSetLoading, loadMoreVisible }: LoadMoreOptions): {
20
+ export default function <D>(getListFn: LoadMoreGetListFn<D>, { defaultLimit, defaultPage, needGet, cacheKey, loadMoreVisible }: LoadMoreOptions): {
21
21
  error: any;
22
22
  dataRef: {
23
23
  current: {
@@ -28,7 +28,6 @@ export default function <D>(getListFn: LoadMoreGetListFn<D>, { defaultLimit, def
28
28
  };
29
29
  loading: boolean;
30
30
  refreshList: (retainList?: boolean) => Promise<void>;
31
- getNext: (callback?: () => void) => void;
32
31
  isEnd: boolean;
33
32
  page: number;
34
33
  limit: number;
@@ -15,12 +15,14 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
15
15
 
16
16
  var _react = require("react");
17
17
 
18
- var _stateRefHooks = _interopRequireDefault(require("../stateRefHooks"));
19
-
20
18
  var _promiseHooks = _interopRequireDefault(require("../promiseHooks"));
21
19
 
22
20
  var _cacheStateHooks = _interopRequireDefault(require("../cacheStateHooks"));
23
21
 
22
+ var _refStateHooks = _interopRequireDefault(require("../refStateHooks"));
23
+
24
+ var _previousHooks = _interopRequireDefault(require("../previousHooks"));
25
+
24
26
  function _default(getListFn, _ref) {
25
27
  var _ref$defaultLimit = _ref.defaultLimit,
26
28
  defaultLimit = _ref$defaultLimit === void 0 ? 10 : _ref$defaultLimit,
@@ -30,7 +32,6 @@ function _default(getListFn, _ref) {
30
32
  needGet = _ref$needGet === void 0 ? true : _ref$needGet,
31
33
  _ref$cacheKey = _ref.cacheKey,
32
34
  cacheKey = _ref$cacheKey === void 0 ? '' : _ref$cacheKey,
33
- customSetLoading = _ref.customSetLoading,
34
35
  loadMoreVisible = _ref.loadMoreVisible;
35
36
 
36
37
  var _useCacheState = (0, _cacheStateHooks.default)(getListFn.toString() + cacheKey, (0, _react.useMemo)(function () {
@@ -53,18 +54,20 @@ function _default(getListFn, _ref) {
53
54
  };
54
55
  }, [defaultPage, defaultLimit, dataRef]);
55
56
 
56
- var _useState = (0, _react.useState)(false),
57
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
58
- isEnd = _useState2[0],
59
- setIsEnd = _useState2[1];
57
+ var _useRefState = (0, _refStateHooks.default)(false),
58
+ _useRefState2 = (0, _slicedToArray2.default)(_useRefState, 3),
59
+ isEnd = _useRefState2[0],
60
+ setIsEnd = _useRefState2[1],
61
+ isEndRef = _useRefState2[2];
60
62
 
61
- var _useState3 = (0, _react.useState)(),
62
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
63
- error = _useState4[0],
64
- setError = _useState4[1];
63
+ var _useState = (0, _react.useState)(),
64
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
65
+ error = _useState2[0],
66
+ setError = _useState2[1];
65
67
 
66
68
  var loadingRef = (0, _react.useRef)(false);
67
69
  var countRef = (0, _react.useRef)(0);
70
+ var preVisible = (0, _previousHooks.default)(loadMoreVisible);
68
71
 
69
72
  var _usePromise = (0, _promiseHooks.default)((0, _react.useCallback)(function (retainList) {
70
73
  var _dataRef$current = dataRef.current,
@@ -98,11 +101,7 @@ function _default(getListFn, _ref) {
98
101
  return Promise.reject();
99
102
  }
100
103
  });
101
- }, [dataRef, defaultLimit, defaultPage, getListFn, setData]), {
102
- customSetLoading: customSetLoading ? (0, _react.useCallback)(function (loading) {
103
- loadingRef.current = loading;
104
- customSetLoading(loading);
105
- }, [customSetLoading]) : undefined,
104
+ }, [dataRef, defaultLimit, defaultPage, getListFn, setData, setIsEnd]), {
106
105
  needInit: false
107
106
  }),
108
107
  handleGetList = _usePromise.handle,
@@ -114,25 +113,28 @@ function _default(getListFn, _ref) {
114
113
 
115
114
 
116
115
  var refreshList = (0, _react.useCallback)(function (retainList) {
116
+ if (!needGet) {
117
+ return;
118
+ }
119
+
117
120
  if (!retainList) {
118
121
  setData(initData);
119
122
  }
120
123
 
121
124
  return handleGetList(retainList);
122
- }, [handleGetList, initData, setData]);
123
- var visibleRef = (0, _stateRefHooks.default)(loadMoreVisible);
124
- var isEndRef = (0, _stateRefHooks.default)(isEnd);
125
+ }, [handleGetList, initData, needGet, setData]);
125
126
  var getNext = (0, _react.useCallback)(function (callback) {
126
127
  if (!isEndRef.current && !loadingRef.current && needGet) {
127
128
  handleGetList().then(callback);
128
129
  }
129
130
  }, [handleGetList, isEndRef, loadingRef, needGet]);
131
+ var preVisibleRef = (0, _react.useRef)(preVisible);
130
132
  (0, _react.useEffect)(function () {
131
133
  if (needGet) {
132
134
  // 当handleGetList发生变化清空数据
133
135
  refreshList().then(function () {
134
136
  var fn = function fn() {
135
- if (visibleRef.current) {
137
+ if (preVisibleRef.current) {
136
138
  getNext(fn);
137
139
  }
138
140
  };
@@ -140,18 +142,17 @@ function _default(getListFn, _ref) {
140
142
  fn();
141
143
  });
142
144
  }
143
- }, [refreshList, handleGetList, needGet, visibleRef, getNext]);
145
+ }, [refreshList, handleGetList, needGet, preVisibleRef, getNext]);
144
146
  (0, _react.useEffect)(function () {
145
- if (loadMoreVisible) {
147
+ if (loadMoreVisible && preVisible !== loadMoreVisible) {
146
148
  getNext();
147
149
  }
148
- }, [getNext, loadMoreVisible]);
150
+ }, [getNext, loadMoreVisible, preVisible]);
149
151
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
150
152
  error: error,
151
153
  dataRef: dataRef,
152
154
  loading: loading,
153
155
  refreshList: refreshList,
154
- getNext: getNext,
155
156
  isEnd: (0, _react.useMemo)(function () {
156
157
  return isEnd || !data.list.length;
157
158
  }, [isEnd, data])
@@ -0,0 +1,3 @@
1
+ import { SelectFilesOption } from './index';
2
+ declare const _default: ({ accept, multiple, sourceType }: SelectFilesOption) => Promise<readonly string[]>;
3
+ export default _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ali = require("remax/ali");
9
+
10
+ var _default = function _default(_ref) {
11
+ var accept = _ref.accept,
12
+ multiple = _ref.multiple,
13
+ sourceType = _ref.sourceType;
14
+ return (0, _ali.chooseImage)({
15
+ count: multiple ? 9 : 1,
16
+ sourceType: sourceType
17
+ }).then(function (_ref2) {
18
+ var apFilePaths = _ref2.apFilePaths;
19
+ return apFilePaths;
20
+ });
21
+ };
22
+
23
+ exports.default = _default;
@@ -8,6 +8,10 @@ export interface SelectFilesOption {
8
8
  * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
9
9
  */
10
10
  accept?: string;
11
+ /**
12
+ * 只有小程序支持,选择图片的来源
13
+ */
14
+ sourceType?: Array<'album' | 'camera'>;
11
15
  }
12
16
  declare const _default: ({ accept, multiple }: SelectFilesOption) => Promise<FileList>;
13
17
  export default _default;
@@ -1,3 +1,3 @@
1
1
  import { SelectFilesOption } from './index';
2
- declare const _default: ({ accept, multiple }: SelectFilesOption) => Promise<string[]>;
2
+ declare const _default: ({ accept, multiple, sourceType }: SelectFilesOption) => Promise<string[]>;
3
3
  export default _default;
@@ -9,9 +9,11 @@ var _wechat = require("remax/wechat");
9
9
 
10
10
  var _default = function _default(_ref) {
11
11
  var accept = _ref.accept,
12
- multiple = _ref.multiple;
12
+ multiple = _ref.multiple,
13
+ sourceType = _ref.sourceType;
13
14
  return (0, _wechat.chooseImage)({
14
- count: multiple ? 9 : 1
15
+ count: multiple ? 9 : 1,
16
+ sourceType: sourceType
15
17
  }).then(function (_ref2) {
16
18
  var tempFilePaths = _ref2.tempFilePaths;
17
19
  return tempFilePaths;
@@ -11,7 +11,6 @@ declare const _default: <D extends unknown>(getList: LoadMoreGetListFn<D>, optio
11
11
  };
12
12
  loading: boolean;
13
13
  refreshList: (retainList?: boolean) => Promise<void>;
14
- getNext: (callback?: () => void) => void;
15
14
  isEnd: boolean;
16
15
  page: number;
17
16
  limit: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parsec-hooks",
3
- "version": "0.0.159",
3
+ "version": "1.0.0",
4
4
  "description": "秒差距前端常用的hooks工具",
5
5
  "author": "mushan0x0",
6
6
  "license": "MIT",
@@ -54,7 +54,7 @@
54
54
  "@babel/helper-call-delegate": "^7.10.3",
55
55
  "@babel/plugin-syntax-typescript": "^7.10.4",
56
56
  "@types/qs": "^6.9.3",
57
- "@types/react": "^16.3.13",
57
+ "@types/react": "^17.0.38",
58
58
  "@types/react-dom": "^16.0.5",
59
59
  "@types/vfile-message": "^2.0.0",
60
60
  "dayjs": "^1.8.21",