UNPKG

2.96 kBJavaScriptView Raw
1import {createDuraCore} from '../src/index'
2import produce from 'immer'
3import DuraImmer from 'dura-plugin-immer'
4import {delay} from 'redux-saga/effects'
5
6describe('demo', () => {
7
8 it('should ', function (done) {
9 const duraCore = createDuraCore();
10 duraCore.addModel({
11 namespace: "user",
12 initialState: {
13 name: "张三"
14 },
15 reducers: {
16 s() {
17 console.log("ss")
18 },
19 a(state, {payload}) {
20 state.name = payload?.name
21 }
22 },
23 effects: {
24 * j() {
25 console.log("jj")
26 },
27 * k() {
28 console.log("kk")
29 },
30 o: [function* (a, b) {
31 yield delay(500, () => console.log('oo'))
32 }, {type: 'throttle', ms: 50}]
33 }
34 }, {
35 namespace: "23",
36 initialState: {
37 name: "张泗"
38 },
39 reducers: {
40 b() {
41 console.log("bb")
42 },
43 d() {
44 console.log("dd")
45 }
46 },
47 effects: {
48 * k() {
49 console.log("kk")
50 },
51 }
52 })
53
54
55 const loadingPlugin = {
56 namespace: 'loading',
57 initialState: {},
58 reducers: {
59 onChangeStatus(state, {payload}) {
60 return {...state, ...payload}
61 }
62 },
63 onEffect: function (effect, name, {put}) {
64 return function* (...args) {
65 yield put({
66 type: 'loading/reducers/onChangeStatus',
67 payload: {
68 [name]: true
69 }
70 })
71 yield effect(...args)
72 yield put({
73 type: 'loading/reducers/onChangeStatus',
74 payload: {
75 [name]: false
76 }
77 })
78 }
79 }
80 }
81
82 duraCore.addPlugin(DuraImmer, loadingPlugin)
83
84
85 duraCore.start()
86
87 // duraCore._reduxStore.dispatch({type: 'user/reducers/a',payload: {name: "里斯"}})
88 duraCore._reduxStore.dispatch({type: 'user/effects/o'})
89 console.log(duraCore._reduxStore.getState()['loading'])
90
91
92 setTimeout(() => {
93 console.log(duraCore._reduxStore.getState()['loading'])
94 done()
95 }, 1000)
96
97 // duraCore._reduxStore.dispatch({type: 'user/effects/o', payload: {name: "里斯"}})
98 // duraCore._reduxStore.dispatch({type: 'user/effects/o'})
99 // duraCore._reduxStore.dispatch({type: 'user/effects/o'})
100 });
101
102})
\No newline at end of file