@fukict/flux 0.1.2 → 0.1.5
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/README.md +6 -6
- package/dist/defineStore.d.ts +52 -0
- package/dist/defineStore.d.ts.map +1 -0
- package/dist/defineStore.js +110 -0
- package/dist/defineStore.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +117 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ class Counter extends Fukict {
|
|
|
64
64
|
|
|
65
65
|
render() {
|
|
66
66
|
const state = counterFlux.getState();
|
|
67
|
-
const actions = counterFlux.
|
|
67
|
+
const actions = counterFlux.actions;
|
|
68
68
|
|
|
69
69
|
return (
|
|
70
70
|
<div>
|
|
@@ -425,9 +425,9 @@ const appFlux = createAppFlux();
|
|
|
425
425
|
|
|
426
426
|
// Use in components
|
|
427
427
|
appFlux.user.getState();
|
|
428
|
-
appFlux.user.
|
|
428
|
+
appFlux.user.actions.setUser(...);
|
|
429
429
|
appFlux.todo.getState();
|
|
430
|
-
appFlux.todo.
|
|
430
|
+
appFlux.todo.actions.addTodo(...);
|
|
431
431
|
```
|
|
432
432
|
|
|
433
433
|
## API Reference
|
|
@@ -465,12 +465,12 @@ Updates state with partial state object.
|
|
|
465
465
|
flux.setState({ count: 10 });
|
|
466
466
|
```
|
|
467
467
|
|
|
468
|
-
### flux.
|
|
468
|
+
### flux.actions
|
|
469
469
|
|
|
470
|
-
|
|
470
|
+
Actions object defined in createFlux config.
|
|
471
471
|
|
|
472
472
|
```typescript
|
|
473
|
-
const actions = flux.
|
|
473
|
+
const actions = flux.actions;
|
|
474
474
|
actions.increment();
|
|
475
475
|
```
|
|
476
476
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AsyncActions, DefineStoreConfig, Store, SyncActions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 创建状态管理 Store
|
|
4
|
+
*
|
|
5
|
+
* @param config Store 配置
|
|
6
|
+
* @returns Store 实例
|
|
7
|
+
*
|
|
8
|
+
* @example 基础用法
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const counterStore = defineStore({
|
|
11
|
+
* state: {
|
|
12
|
+
* count: 0,
|
|
13
|
+
* },
|
|
14
|
+
* actions: {
|
|
15
|
+
* increment: (state) => ({ count: state.count + 1 }),
|
|
16
|
+
* add: (state, amount: number) => ({ count: state.count + amount }),
|
|
17
|
+
* },
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // 使用
|
|
21
|
+
* counterStore.actions.increment();
|
|
22
|
+
* counterStore.actions.add(5);
|
|
23
|
+
* console.log(counterStore.state.count);
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example 异步 actions
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const userStore = defineStore({
|
|
29
|
+
* state: {
|
|
30
|
+
* user: null,
|
|
31
|
+
* loading: false,
|
|
32
|
+
* error: null,
|
|
33
|
+
* },
|
|
34
|
+
* asyncActions: {
|
|
35
|
+
* async fetchUser(ctx, id: string) {
|
|
36
|
+
* ctx.setState({ loading: true, error: null });
|
|
37
|
+
* try {
|
|
38
|
+
* const user = await api.getUser(id);
|
|
39
|
+
* ctx.setState({ user, loading: false });
|
|
40
|
+
* } catch (error) {
|
|
41
|
+
* ctx.setState({ error, loading: false });
|
|
42
|
+
* }
|
|
43
|
+
* },
|
|
44
|
+
* },
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // 使用
|
|
48
|
+
* await userStore.asyncActions.fetchUser('123');
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function defineStore<T extends object, A extends SyncActions<T> = {}, AA extends AsyncActions<T> = {}>(config: DefineStoreConfig<T, A, AA>): Store<T, A, AA>;
|
|
52
|
+
//# sourceMappingURL=defineStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineStore.d.ts","sourceRoot":"","sources":["../src/defineStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,iBAAiB,EAGjB,KAAK,EACL,WAAW,EAEZ,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,WAAW,CACzB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,EAC7B,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,EAC/B,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAuFtD"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Flux } from './Flux';
|
|
2
|
+
/**
|
|
3
|
+
* 创建状态管理 Store
|
|
4
|
+
*
|
|
5
|
+
* @param config Store 配置
|
|
6
|
+
* @returns Store 实例
|
|
7
|
+
*
|
|
8
|
+
* @example 基础用法
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const counterStore = defineStore({
|
|
11
|
+
* state: {
|
|
12
|
+
* count: 0,
|
|
13
|
+
* },
|
|
14
|
+
* actions: {
|
|
15
|
+
* increment: (state) => ({ count: state.count + 1 }),
|
|
16
|
+
* add: (state, amount: number) => ({ count: state.count + amount }),
|
|
17
|
+
* },
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // 使用
|
|
21
|
+
* counterStore.actions.increment();
|
|
22
|
+
* counterStore.actions.add(5);
|
|
23
|
+
* console.log(counterStore.state.count);
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example 异步 actions
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const userStore = defineStore({
|
|
29
|
+
* state: {
|
|
30
|
+
* user: null,
|
|
31
|
+
* loading: false,
|
|
32
|
+
* error: null,
|
|
33
|
+
* },
|
|
34
|
+
* asyncActions: {
|
|
35
|
+
* async fetchUser(ctx, id: string) {
|
|
36
|
+
* ctx.setState({ loading: true, error: null });
|
|
37
|
+
* try {
|
|
38
|
+
* const user = await api.getUser(id);
|
|
39
|
+
* ctx.setState({ user, loading: false });
|
|
40
|
+
* } catch (error) {
|
|
41
|
+
* ctx.setState({ error, loading: false });
|
|
42
|
+
* }
|
|
43
|
+
* },
|
|
44
|
+
* },
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // 使用
|
|
48
|
+
* await userStore.asyncActions.fetchUser('123');
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function defineStore(config) {
|
|
52
|
+
// 创建 Flux 实例
|
|
53
|
+
const flux = new Flux(config.state);
|
|
54
|
+
// 创建 action context(用于异步 actions)
|
|
55
|
+
const createContext = () => ({
|
|
56
|
+
getState: () => flux.getState(),
|
|
57
|
+
setState: partial => flux.setState(partial),
|
|
58
|
+
});
|
|
59
|
+
// 包装同步 actions
|
|
60
|
+
const wrappedActions = {};
|
|
61
|
+
if (config.actions) {
|
|
62
|
+
for (const key of Object.keys(config.actions)) {
|
|
63
|
+
const action = config.actions[key];
|
|
64
|
+
// @ts-expect-error - 动态创建包装函数
|
|
65
|
+
wrappedActions[key] = (...args) => {
|
|
66
|
+
const currentState = flux.getState();
|
|
67
|
+
const partial = action(currentState, ...args);
|
|
68
|
+
if (partial !== undefined && partial !== null) {
|
|
69
|
+
flux.setState(partial);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// 包装异步 actions
|
|
75
|
+
const wrappedAsyncActions = {};
|
|
76
|
+
if (config.asyncActions) {
|
|
77
|
+
for (const key of Object.keys(config.asyncActions)) {
|
|
78
|
+
const asyncAction = config.asyncActions[key];
|
|
79
|
+
// @ts-expect-error - 动态创建包装函数
|
|
80
|
+
wrappedAsyncActions[key] = async (...args) => {
|
|
81
|
+
const ctx = createContext();
|
|
82
|
+
await asyncAction(ctx, ...args);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// 创建 store 对象
|
|
87
|
+
const store = {
|
|
88
|
+
// 状态访问(只读代理)
|
|
89
|
+
get state() {
|
|
90
|
+
return flux.getState();
|
|
91
|
+
},
|
|
92
|
+
// 同步 actions
|
|
93
|
+
actions: wrappedActions,
|
|
94
|
+
// 异步 actions
|
|
95
|
+
asyncActions: wrappedAsyncActions,
|
|
96
|
+
// 订阅方法
|
|
97
|
+
subscribe: ((selectorOrListener, listener) => {
|
|
98
|
+
if (listener) {
|
|
99
|
+
return flux.subscribe(selectorOrListener, listener);
|
|
100
|
+
}
|
|
101
|
+
return flux.subscribe(selectorOrListener);
|
|
102
|
+
}),
|
|
103
|
+
// 获取状态快照
|
|
104
|
+
getState: () => flux.getState(),
|
|
105
|
+
// 直接设置状态(高级用法)
|
|
106
|
+
setState: partial => flux.setState(partial),
|
|
107
|
+
};
|
|
108
|
+
return store;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=defineStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineStore.js","sourceRoot":"","sources":["../src/defineStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAY9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,WAAW,CAIzB,MAAmC;IACnC,aAAa;IACb,MAAM,IAAI,GAAG,IAAI,IAAI,CAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,kCAAkC;IAClC,MAAM,aAAa,GAAG,GAAqB,EAAE,CAAC,CAAC;QAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC/B,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,cAAc,GAAG,EAItB,CAAC;IAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,8BAA8B;YAC9B,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAe,CAAC;gBAC5D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,mBAAmB,GAAG,EAO3B,CAAC;IAEF,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAiB,EAAE,CAAC;YACnE,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC7C,8BAA8B;YAC9B,mBAAmB,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACtD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;gBAC5B,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,KAAK,GAAoB;QAC7B,aAAa;QACb,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAED,aAAa;QACb,OAAO,EAAE,cAAc;QAEvB,aAAa;QACb,YAAY,EAAE,mBAAmB;QAEjC,OAAO;QACP,SAAS,EAAE,CAAC,CACV,kBAA8D,EAC9D,QAAgC,EACnB,EAAE;YACf,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,SAAS,CACnB,kBAA8C,EAC9C,QAAQ,CACT,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAqC,CAAC,CAAC;QAC/D,CAAC,CAAiC;QAElC,SAAS;QACT,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;QAE/B,eAAe;QACf,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC5C,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Core philosophy: Flux itself has no update permission, only provides subscription mechanism.
|
|
5
5
|
*/
|
|
6
6
|
export { Flux } from './Flux';
|
|
7
|
+
export { defineStore } from './defineStore';
|
|
7
8
|
export { createFlux } from './createFlux';
|
|
8
|
-
export type { FluxListener, FluxSelector, Unsubscribe, CreateFluxConfig, FluxInstance, FluxStore, } from './types';
|
|
9
|
+
export type { FluxListener, FluxSelector, Unsubscribe, ActionContext, AsyncAction, AsyncActions, DefineStoreConfig, Store, SyncAction, SyncActions, WrappedAsyncAction, WrappedSyncAction, CreateFluxConfig, FluxInstance, FluxStore, } from './types';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,YAAY,EAEV,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type FluxSelector<T, S> = (state: T) => S;
|
|
|
12
12
|
export type Unsubscribe = () => void;
|
|
13
13
|
/**
|
|
14
14
|
* createFlux configuration type
|
|
15
|
+
* @deprecated 推荐使用 defineStore
|
|
15
16
|
*/
|
|
16
17
|
export interface CreateFluxConfig<T, A> {
|
|
17
18
|
/**
|
|
@@ -34,6 +35,7 @@ export interface FluxInstance<T> {
|
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* createFlux return type
|
|
38
|
+
* @deprecated 推荐使用 defineStore
|
|
37
39
|
*/
|
|
38
40
|
export interface FluxStore<T, A> {
|
|
39
41
|
/**
|
|
@@ -58,4 +60,119 @@ export interface FluxStore<T, A> {
|
|
|
58
60
|
subscribe(listener: FluxListener<T>): Unsubscribe;
|
|
59
61
|
subscribe<S>(selector: FluxSelector<T, S>, listener: FluxListener<S>): Unsubscribe;
|
|
60
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* 同步 Action 函数类型
|
|
65
|
+
*
|
|
66
|
+
* 接收当前 state 和可选参数,返回 Partial<State>
|
|
67
|
+
*/
|
|
68
|
+
export type SyncAction<T, Args extends unknown[] = []> = (state: T, ...args: Args) => Partial<T>;
|
|
69
|
+
/**
|
|
70
|
+
* 同步 Actions 集合
|
|
71
|
+
*/
|
|
72
|
+
export type SyncActions<T> = {
|
|
73
|
+
[key: string]: SyncAction<T, any[]>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Action 上下文(用于异步 actions)
|
|
77
|
+
*/
|
|
78
|
+
export interface ActionContext<T> {
|
|
79
|
+
/**
|
|
80
|
+
* 获取当前状态
|
|
81
|
+
*/
|
|
82
|
+
getState(): T;
|
|
83
|
+
/**
|
|
84
|
+
* 更新状态(可多次调用)
|
|
85
|
+
*/
|
|
86
|
+
setState(partial: Partial<T>): void;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 异步 Action 函数类型
|
|
90
|
+
*
|
|
91
|
+
* 接收 context 和可选参数,通过 ctx.setState 更新状态
|
|
92
|
+
*/
|
|
93
|
+
export type AsyncAction<T, Args extends unknown[] = []> = (ctx: ActionContext<T>, ...args: Args) => Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* 异步 Actions 集合
|
|
96
|
+
*/
|
|
97
|
+
export type AsyncActions<T> = {
|
|
98
|
+
[key: string]: AsyncAction<T, any[]>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* defineStore 配置类型
|
|
102
|
+
*/
|
|
103
|
+
export interface DefineStoreConfig<T extends object, A extends SyncActions<T> = {}, AA extends AsyncActions<T> = {}> {
|
|
104
|
+
/**
|
|
105
|
+
* 初始状态
|
|
106
|
+
*/
|
|
107
|
+
state: T;
|
|
108
|
+
/**
|
|
109
|
+
* 同步 Actions
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* actions: {
|
|
114
|
+
* increment: (state) => ({ count: state.count + 1 }),
|
|
115
|
+
* add: (state, amount: number) => ({ count: state.count + amount }),
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
actions?: A;
|
|
120
|
+
/**
|
|
121
|
+
* 异步 Actions
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* asyncActions: {
|
|
126
|
+
* async fetchUser(ctx, id: string) {
|
|
127
|
+
* ctx.setState({ loading: true });
|
|
128
|
+
* const user = await api.getUser(id);
|
|
129
|
+
* ctx.setState({ user, loading: false });
|
|
130
|
+
* },
|
|
131
|
+
* }
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
asyncActions?: AA;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 包装后的同步 Action 类型(移除 state 参数)
|
|
138
|
+
*/
|
|
139
|
+
export type WrappedSyncAction<T, A> = A extends (state: T, ...args: infer Args) => Partial<T> ? (...args: Args) => void : never;
|
|
140
|
+
/**
|
|
141
|
+
* 包装后的异步 Action 类型(移除 ctx 参数)
|
|
142
|
+
*/
|
|
143
|
+
export type WrappedAsyncAction<T, A> = A extends (ctx: ActionContext<T>, ...args: infer Args) => Promise<void> ? (...args: Args) => Promise<void> : never;
|
|
144
|
+
/**
|
|
145
|
+
* Store 实例类型
|
|
146
|
+
*/
|
|
147
|
+
export interface Store<T extends object, A extends SyncActions<T> = {}, AA extends AsyncActions<T> = {}> {
|
|
148
|
+
/**
|
|
149
|
+
* 当前状态(只读)
|
|
150
|
+
*/
|
|
151
|
+
readonly state: T;
|
|
152
|
+
/**
|
|
153
|
+
* 同步 Actions
|
|
154
|
+
*/
|
|
155
|
+
actions: {
|
|
156
|
+
[K in keyof A]: WrappedSyncAction<T, A[K]>;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* 异步 Actions
|
|
160
|
+
*/
|
|
161
|
+
asyncActions: {
|
|
162
|
+
[K in keyof AA]: WrappedAsyncAction<T, AA[K]>;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* 订阅状态变化
|
|
166
|
+
*/
|
|
167
|
+
subscribe(listener: FluxListener<T>): Unsubscribe;
|
|
168
|
+
subscribe<S>(selector: FluxSelector<T, S>, listener: FluxListener<S>): Unsubscribe;
|
|
169
|
+
/**
|
|
170
|
+
* 获取状态快照
|
|
171
|
+
*/
|
|
172
|
+
getState(): T;
|
|
173
|
+
/**
|
|
174
|
+
* 直接设置状态(高级用法,一般推荐使用 actions)
|
|
175
|
+
*/
|
|
176
|
+
setState(partial: Partial<T>): void;
|
|
177
|
+
}
|
|
61
178
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|