@astral/mobx-query 1.2.1 → 1.3.0
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.
|
@@ -29,7 +29,7 @@ export declare class AuxiliaryQuery<TResult, TError = void> {
|
|
|
29
29
|
/**
|
|
30
30
|
* @description единый промис, для устранения гонки запросов
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
unifiedPromise?: Promise<TResult>;
|
|
33
33
|
constructor();
|
|
34
34
|
/**
|
|
35
35
|
* @description метод ответственный за создание единого промиса,
|
|
@@ -82,6 +82,10 @@ export declare class InfiniteQuery<TResult, TError = void> implements QueryBaseA
|
|
|
82
82
|
* @description обработчик успешного запроса, проверяет что мы достигли предела
|
|
83
83
|
*/
|
|
84
84
|
private submitSuccess;
|
|
85
|
+
/**
|
|
86
|
+
* @description форс метод для установки данных
|
|
87
|
+
*/
|
|
88
|
+
forceUpdate: (data: TResult[]) => void;
|
|
85
89
|
/**
|
|
86
90
|
* @description метод для обогащения параметров текущими значениями для инфинити
|
|
87
91
|
*/
|
|
@@ -27,7 +27,6 @@ export class InfiniteQuery {
|
|
|
27
27
|
* @description обработчик успешного запроса, проверяет что мы достигли предела
|
|
28
28
|
*/
|
|
29
29
|
this.submitSuccess = (result, onSuccess, isIncrement) => {
|
|
30
|
-
this.auxiliary.submitSuccess();
|
|
31
30
|
onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(result);
|
|
32
31
|
if (isIncrement && this.storage.hasData) {
|
|
33
32
|
this.storage.setData([...this.storage.data, ...result]);
|
|
@@ -47,6 +46,15 @@ export class InfiniteQuery {
|
|
|
47
46
|
this.isEndReached = true;
|
|
48
47
|
}
|
|
49
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* @description форс метод для установки данных
|
|
51
|
+
*/
|
|
52
|
+
this.forceUpdate = (data) => {
|
|
53
|
+
this.offset = 0;
|
|
54
|
+
this.isEndReached = false;
|
|
55
|
+
this.auxiliary.submitSuccess();
|
|
56
|
+
this.submitSuccess(data);
|
|
57
|
+
};
|
|
50
58
|
/**
|
|
51
59
|
* @description метод для инвалидации данных
|
|
52
60
|
*/
|
package/Query/Query.d.ts
CHANGED
|
@@ -68,6 +68,10 @@ export declare class Query<TResult, TError = void> implements QueryBaseActions<T
|
|
|
68
68
|
* @description обработчик успешного ответа
|
|
69
69
|
*/
|
|
70
70
|
private submitSuccess;
|
|
71
|
+
/**
|
|
72
|
+
* @description форс метод для установки данных
|
|
73
|
+
*/
|
|
74
|
+
forceUpdate: (data: TResult) => void;
|
|
71
75
|
/**
|
|
72
76
|
* @description метод для переиспользования синхронной логики запроса
|
|
73
77
|
*/
|
package/Query/Query.js
CHANGED
|
@@ -38,6 +38,13 @@ export class Query {
|
|
|
38
38
|
this.isInvalid = false;
|
|
39
39
|
return resData;
|
|
40
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* @description форс метод для установки данных
|
|
43
|
+
*/
|
|
44
|
+
this.forceUpdate = (data) => {
|
|
45
|
+
this.auxiliary.submitSuccess();
|
|
46
|
+
this.submitSuccess(data);
|
|
47
|
+
};
|
|
41
48
|
/**
|
|
42
49
|
* @description метод для переиспользования синхронной логики запроса
|
|
43
50
|
*/
|
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
- [Автоматический](#3-автоматический)
|
|
20
20
|
- [Инвалидация данных](#инвалидация-данных)
|
|
21
21
|
- [Особенности инвалидации](#особенности-инвалидации)
|
|
22
|
+
- [Ручная установка данных в кэш](#ручная-установка-данных-в-кэш)
|
|
22
23
|
- [InfiniteQuery](#infinitequery)
|
|
23
24
|
- [isEndReached](#isendreached)
|
|
24
25
|
- [Mutation](#mutation)
|
|
@@ -180,6 +181,14 @@ mobxQuery.invalidate(['key one']); // ключ не совпадает, query Н
|
|
|
180
181
|
mobxQuery.invalidateQueries();
|
|
181
182
|
```
|
|
182
183
|
|
|
184
|
+
# Ручная установка данных в кэш
|
|
185
|
+
|
|
186
|
+
Для установки данных, без исполнения executor, используйте метод `forceUpdate`. При вызове все статусные флаги устанавливаются как success состояние
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
query.forceUpdate('foo');
|
|
190
|
+
```
|
|
191
|
+
|
|
183
192
|
# InfiniteQuery
|
|
184
193
|
Существует необходимость постепенного запроса массивов данных, в постраничном режиме. Типичный пример, инфинити скролл, когда новая пачка данных запрашивается, в момент когда пользователь докрутил список до конца.
|
|
185
194
|
Для удобства, мы создали специальный `query`, который содержит дополнительный метод `fetchMore` и при вызове оного, происходит запрос с увеличенными счетчиками. Данные ответа на этот запрос, будут сконкатенированы с уже имеющимся. В случае, если количество данных меньше, чем длина страницы, будет считаться что мы дошли до конца списка.
|