How to access the getter from another vuex module?

前端 未结 2 1137
别跟我提以往
别跟我提以往 2021-01-30 19:45

Within a vuex getter I know it is possible to access the state from another vuex module like so:

pages: (state, getters, rootState) => {
    console.log(rootS         


        
相关标签:
2条回答
  • 2021-01-30 20:14

    If you want to access global/namespaced getter from the module, Here is how you can it,

    getters: {
        // `getters` is localized to this module's getters
        // you can use rootGetters via 4th argument of getters
        someGetter (state, getters, rootState, rootGetters) {
            rootGetters.someOtherGetter //'someOtherGetter' global getter
            rootGetters['bar/someOtherGetter'] //'bar/someOtherGetter' namespaced getter
        },
        ...
    },
    

    Here is the way to access actions, Also includes usage of action and mutations for the reference.

    actions: {
          // dispatch and commit are also localized for this module
          // they will accept `root` option for the root dispatch/commit
          someAction ({ dispatch, commit, getters, rootGetters }) {
          
            rootGetters.someGetter //'someGetter' global getter
            rootGetters['bar/someGetter'] //'bar/someGetter' namespaced getter
    
            dispatch('someOtherAction') //'someOtherAction' local action
            dispatch('someOtherAction', null, { root: true }) //'someOtherAction' namespaced action
    
            commit('someMutation') //'someMutation' local mutation
            commit('someMutation', null, { root: true }) //'someMutation' namespaced mutation
          },
          ...
        }
      }
    
    0 讨论(0)
  • 2021-01-30 20:30

    Had to dig through the documentation but I found it:

    https://vuex.vuejs.org/en/api.html

    (Ctrl+F search for RootGetters on that page)

    My code becomes:

    pages: (state, getters, rootState, rootGetters) => {}
    

    Beware that all rootGetters are global and you no longer use it like rootState where you would prefix the state by the module name.

    You simply call a getter from another module like so:

    rootGetters.activeFilters
    

    Hopefully this will help someone out in the future who is running into this as well.

    0 讨论(0)
提交回复
热议问题