From 2a446af5e020bd2744c53c5cf639099f80ceaf5f Mon Sep 17 00:00:00 2001 From: Wentao LI Date: Tue, 19 Nov 2019 20:57:16 +0800 Subject: [PATCH] - extends RunSagaOptions and add a dispatchSagaAction flag to enable/disable dispatchSagaAction --- sample/package.json | 4 +--- sample/src/composables/compzApplicatoinCtx.ts | 5 +++-- sample/src/views/Home.vue | 4 +++- src/VuexSaga.ts | 11 ++++++++--- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/sample/package.json b/sample/package.json index 26c891a..cb35eee 100644 --- a/sample/package.json +++ b/sample/package.json @@ -1,6 +1,4 @@ { - "name": "sample-vue-ts-app", - "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -18,7 +16,7 @@ "vue-router": "^3.1.3", "vuex": "^3.0.1", "vuex-class": "^0.3.2", - "vuex-saga-ts": "^0.20.1" + "vuex-saga-ts": "^0.20.2" }, "devDependencies": { "@types/jest": "^24.0.11", diff --git a/sample/src/composables/compzApplicatoinCtx.ts b/sample/src/composables/compzApplicatoinCtx.ts index 074489b..add94d1 100644 --- a/sample/src/composables/compzApplicatoinCtx.ts +++ b/sample/src/composables/compzApplicatoinCtx.ts @@ -5,7 +5,8 @@ import { SagaActions } from '@/store/application' import { mainStoreInjector } from './MainStore' import {IApplicationState} from "@/store/application/types"; -interface IApplicaitonCtx extends IApplicationState{ +interface IApplicaitonCtx{ + state:IApplicationState, actions:{ start:()=>void; } @@ -18,7 +19,7 @@ export function compzApplicatoinCtx():IApplicaitonCtx{ return { // @ts-ignore - ...toRefs(applicationsState), + state:toRefs(applicationsState), actions:{ start: ()=>{store.sagaDispatchAction(SagaActions.start())} } diff --git a/sample/src/views/Home.vue b/sample/src/views/Home.vue index 82364d6..aba011b 100644 --- a/sample/src/views/Home.vue +++ b/sample/src/views/Home.vue @@ -28,7 +28,9 @@ export default createComponent({ }, setup(){ const { - loading, + state:{ + loading + }, actions:{start} } = compzApplicatoinCtx(); diff --git a/src/VuexSaga.ts b/src/VuexSaga.ts index 3c63904..4a04953 100644 --- a/src/VuexSaga.ts +++ b/src/VuexSaga.ts @@ -38,6 +38,10 @@ export function mapSagaActions(actions:SagaTree):MappedSagaMethodMap { return res; } +interface ExtSagaOption extends RunSagaOptions { + dispatchSagaAction:boolean; +} + /** * Main plugin function * @@ -53,18 +57,19 @@ export function VuexSaga< S extends Saga >( saga: S, - options?: RunSagaOptions, + options?: ExtSagaOption, ...args: Parameters ) { return (store:Store) => { const channel = stdChannel(); + const dispatchSagaAction = options && options.dispatchSagaAction; // eslint-disable-next-line no-param-reassign (store as any ).sagaDispatch = (type, payload={}) => { - store.commit({ type, payload }); + dispatchSagaAction && store.commit({ type, payload }); return channel.put({ type, payload }) }; (store as any ).sagaDispatchAction = (action:Action) =>{ - store.commit(action); + dispatchSagaAction && store.commit(action); return channel.put(action) }; runSaga(