@astral/mobx-query 1.0.1 → 1.2.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.
- package/MobxQuery/MobxQuery.d.ts +8 -4
- package/MobxQuery/MobxQuery.js +8 -0
- package/README.md +6 -0
- package/package.json +1 -1
- package/types.d.ts +1 -1
package/MobxQuery/MobxQuery.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ type CreateInfiniteQueryParams<TResult, TError> = Omit<InfiniteQueryParams<TResu
|
|
|
21
21
|
/**
|
|
22
22
|
* @description Сервис, позволяющий кэшировать данные.
|
|
23
23
|
*/
|
|
24
|
-
export declare class MobxQuery {
|
|
24
|
+
export declare class MobxQuery<TDefaultError = void> {
|
|
25
25
|
/**
|
|
26
26
|
* @description объект соответствия хешей ключей и их значений
|
|
27
27
|
*/
|
|
@@ -58,6 +58,10 @@ export declare class MobxQuery {
|
|
|
58
58
|
* предполагается использование из домена
|
|
59
59
|
*/
|
|
60
60
|
invalidate: (keysParts: CacheKey[]) => void;
|
|
61
|
+
/**
|
|
62
|
+
* @description метод инвалидации всех query
|
|
63
|
+
*/
|
|
64
|
+
invalidateQueries: () => void;
|
|
61
65
|
/**
|
|
62
66
|
* @description метод, который занимается проверкой наличия стора по ключу,
|
|
63
67
|
* и если нет, создает новый, добавляет его к себе в память, и возвращает его пользователю
|
|
@@ -66,14 +70,14 @@ export declare class MobxQuery {
|
|
|
66
70
|
/**
|
|
67
71
|
* @description метод создания стора, кешируется
|
|
68
72
|
*/
|
|
69
|
-
createQuery: <TResult, TError>(key: CacheKey[], executor: QueryExecutor<TResult>, params?: CreateQueryParams<TResult, TError> | undefined) => Query<TResult, TError>;
|
|
73
|
+
createQuery: <TResult, TError = TDefaultError>(key: CacheKey[], executor: QueryExecutor<TResult>, params?: CreateQueryParams<TResult, TError> | undefined) => Query<TResult, TError>;
|
|
70
74
|
/**
|
|
71
75
|
* @description метод создания инфинит стора, кешируется
|
|
72
76
|
*/
|
|
73
|
-
createInfiniteQuery: <TResult, TError>(key: CacheKey[], executor: InfiniteExecutor<TResult>, params?: CreateInfiniteQueryParams<TResult, TError> | undefined) => InfiniteQuery<TResult, TError>;
|
|
77
|
+
createInfiniteQuery: <TResult, TError = TDefaultError>(key: CacheKey[], executor: InfiniteExecutor<TResult>, params?: CreateInfiniteQueryParams<TResult, TError> | undefined) => InfiniteQuery<TResult, TError>;
|
|
74
78
|
/**
|
|
75
79
|
* @description метод создания мутации, не кешируется
|
|
76
80
|
*/
|
|
77
|
-
createMutation: <TResult, TError, TExecutorParams>(executor: MutationExecutor<TResult, TExecutorParams>, params?: MutationParams<TResult, TError> | undefined) => Mutation<TResult, TError, TExecutorParams>;
|
|
81
|
+
createMutation: <TResult, TError = TDefaultError, TExecutorParams = void>(executor: MutationExecutor<TResult, TExecutorParams>, params?: MutationParams<TResult, TError> | undefined) => Mutation<TResult, TError, TExecutorParams>;
|
|
78
82
|
}
|
|
79
83
|
export {};
|
package/MobxQuery/MobxQuery.js
CHANGED
|
@@ -45,6 +45,14 @@ export class MobxQuery {
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* @description метод инвалидации всех query
|
|
50
|
+
*/
|
|
51
|
+
this.invalidateQueries = () => {
|
|
52
|
+
[...this.cacheableStores.entries()].forEach(([, store]) => {
|
|
53
|
+
store.invalidate();
|
|
54
|
+
});
|
|
55
|
+
};
|
|
48
56
|
/**
|
|
49
57
|
* @description метод, который занимается проверкой наличия стора по ключу,
|
|
50
58
|
* и если нет, создает новый, добавляет его к себе в память, и возвращает его пользователю
|
package/README.md
CHANGED
|
@@ -174,6 +174,12 @@ mobxQuery.invalidate(['key one']); // ключ не совпадает, query Н
|
|
|
174
174
|
|
|
175
175
|
- Инвалидация будет происходить только для query, поле `data` которых считывается в данный момент. Для query, `data` которых будут отрендерены позже, запрос произойдет только в момент использования. Для превентивного обновления данных потребуется последовательное использование `sync/async` методов сразу после `invalidate`.
|
|
176
176
|
|
|
177
|
+
### Массовая инвалидация
|
|
178
|
+
Для инвалидации всех query необходимо использовать метод `invalidateQueries`
|
|
179
|
+
```ts
|
|
180
|
+
mobxQuery.invalidateQueries();
|
|
181
|
+
```
|
|
182
|
+
|
|
177
183
|
# InfiniteQuery
|
|
178
184
|
Существует необходимость постепенного запроса массивов данных, в постраничном режиме. Типичный пример, инфинити скролл, когда новая пачка данных запрашивается, в момент когда пользователь докрутил список до конца.
|
|
179
185
|
Для удобства, мы создали специальный `query`, который содержит дополнительный метод `fetchMore` и при вызове оного, происходит запрос с увеличенными счетчиками. Данные ответа на этот запрос, будут сконкатенированы с уже имеющимся. В случае, если количество данных меньше, чем длина страницы, будет считаться что мы дошли до конца списка.
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -46,6 +46,6 @@ export type FetchPolicy = 'network-only' | 'cache-first';
|
|
|
46
46
|
/**
|
|
47
47
|
* @description ключ для кешированя
|
|
48
48
|
*/
|
|
49
|
-
export type CacheKey = string |
|
|
49
|
+
export type CacheKey = string | number | boolean | null | undefined | CacheKey[] | {
|
|
50
50
|
[key: string]: CacheKey;
|
|
51
51
|
};
|