programing

하위 디렉터리의 Vuex 액세스 모듈

prostudy 2022. 4. 25. 21:32
반응형

하위 디렉터리의 Vuex 액세스 모듈

나는 다음과 같은 디렉토리 구조를 가지고 있다.

  • 저장하다
    • 모듈
      • file1.js
      • file2.js
      • file3.js
      • 다른 폴더
        • filex1.js

내 질문은, 어떻게 다른 Folder/filex1.js의 상태에 접근하는가에 관한 것이다. 나는 값을 설정할 수 있지만, 나는 그것을 얻을 수 없다.

this.$store.dispatch('anotherFolder/filex1/myAction', {}) //work

let val = this.$store.state.anotherFolder.filex1.myValue //not work

나는 아래와 같이 모듈을 수입하고 있다.

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'

Vue.use(Vuex)
const modulesFiles = require.context('./modules', true, /\.js$/)
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

const store = new Vuex.Store({
  modules,
  getters
})

export default store

my filex1.js

export default {
    namespaced: true,
    state: {
      myValue: {}
    },
    actions: {
      myAction({ commit }, reg) {
        commit('MY_ACTION', reg)
      }
    },
    mutations: {
      MY_ACTION(state, reg) {
        state.myValue = reg
      }
    }
  }
  

나는 매장 파일을 서브디렉토리로 정리해서 모듈 폴더에 모든 것을 다 넣지 않았으면 좋겠어.고마워!

구성 요소의 vuex에서 제공하는 바인딩 도우미를 사용하여 중첩된 모듈의 상태에 액세스할 수 있음:

computed: {
  ...mapState({
    a: state => state.some.nested.module.a,
    b: state => state.some.nested.module.b
  })

}

https://vuex.vuejs.org/guide/modules.html#namespacing을 참조하십시오.

참조URL: https://stackoverflow.com/questions/65036401/vuex-access-modules-in-subdirectories

반응형