4.1.0 • Published 9 months ago

vuex-extensions v4.1.0

Weekly downloads
1,488
License
MIT
Repository
github
Last release
9 months ago

:fire: HEADS UP! You're currently looking at Vuex-extensions 4 branch. If you're looking for Vuex 3, please check out master branch.


Vuex Extensions

Add Reset and Mixins function to Vuex

Resources

Install

You can install it via NPM

npm install vuex-extensions

or YARN

yarn add vuex-extensions

Usage

Check out the example on CodeSandbox.

Edit vuex-persistedstate

Creating Vuex.Store

import { Store } from 'vuex'
import { createStore } from 'vuex-extensions'

export default createStore(Store, {
  plugins: []
  modules: {}
})

Mixins: adding some default getters/mutations/actions to all modules

    const store = createStore(Vuex.Store, {
      modules: {
        sub: {
          namespaced: true,
          state: {
            count: 0
          }
        }
      },
      mixins: {
        mutations: {
          changeState: function (state, changed) {
            Object.entries(changed)
              .forEach(([name, value]) => {
                state[name] = value
              })
          }
        }
      }
    })
    
    store.commit('sub/changeState', { count: 1 })

Store resets to initial State

import { useStore } from 'vuex'

// Vue composition
const store = useStore()
store.reset()

// Vue Component
this.$store.reset()
// Vuex action
modules: {
  sub: {
    actions: {
      logout() {
        this.reset()
      }
    }
  }
}
Reset with option

Assume: store has structure as:

root
  - state: { count: 0 }
  - modules:
    - child1
      - state: { count: 0 }
      - modules:
        - grandchild1 { state: { count: 0 } }
        - grandchild2 { state: { count: 0 } }
    - child1
      - state: { count: 0 }
      - modules:
        - grandchild1 { state: { count: 0 } }
        - grandchild2 { state: { count: 0 } }

After some actions, store has state:

{
  state: { count: 1 },
  child1: { 
    state: { count: 1 }
    grandchild1: { state: { count: 1 } }
    grandchild2: { state: { count: 1 } }
  },
  child1: {
    state: { count: 1 }
    grandchild1: { state: { count: 1 } }
    grandchild2: { state: { count: 1 } }
  }
}
// Reset root state only, all submodules are ingored
this.$store.reset({ self: true, nested: false })
// {
//   state: { count: 0 },
//   child1: { 
//     state: { count: 1 }
//     grandchild1: { state: { count: 1 } }
//     grandchild2: { state: { count: 1 } }
//   },
//   child1: {
//     state: { count: 1 }
//     grandchild1: { state: { count: 1 } }
//     grandchild2: { state: { count: 1 } }
//   }
// }

// Reset child1 and all it's sub modules, all other modules are ingored
this.$store.reset({ 
  self: false,
  nested: false, // if nested is not set (undefined), it will be equal to self
  modules: { child1: { self: true} }
})
// {
//   state: { count: 1 },
//   child1: { 
//     state: { count: 0 }
//     grandchild1: { state: { count: 0 } }
//     grandchild2: { state: { count: 0 } }
//   },
//   child1: {
//     state: { count: 1 }
//     grandchild1: { state: { count: 1 } }
//     grandchild2: { state: { count: 1 } }
//   }
// }

// Rest grandchild1 state only, all other modules are ingored
this.$store.reset({ 
  self: false,
  // nested: false,
  modules: { 
    child1: {
      modules: {
        grandchild1: { self: true }
      }
    } 
  }
})
// {
//   state: { count: 1 },
//   child1: { 
//     state: { count: 1 }
//     grandchild1: { state: { count: 0 } }
//     grandchild2: { state: { count: 1 } }
//   },
//   child1: {
//     state: { count: 1 }
//     grandchild1: { state: { count: 1 } }
//     grandchild2: { state: { count: 1 } }
//   }
// }
1.2.2

9 months ago

1.2.1

9 months ago

4.1.0

9 months ago

4.0.0-beta

3 years ago

4.0.0

3 years ago

1.1.5

4 years ago

1.1.4-beta

4 years ago

1.1.3-beta

4 years ago

1.1.2-beta

4 years ago

1.1.1-beta

4 years ago

1.0.10

4 years ago

1.1.0-beta

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.8-beta

4 years ago

1.0.9-beta

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago