vuex modules 모듈
9185 단어 vueJavaScript
export default () => {
return new Vuex.Store({
modules: {
a: {
state: {
text: 1
}
},
b: {
state: {
text: 2
}
}
}
})
}
computed: {
textA () {
return this.$store.state.a.text // 1
}
}
혹은
...mapState({
textA: (state) => state.a.text
})
2.modules의mutation
mapMutations에서 modules의 mutation을 직접 사용할 수 있습니다
modules: {
a: {
state: {
text: 1
},
mutations: {
updateText (state, text) {
console.log('a.state', state)
state.text = text
}
}
}
}
mounted () {
this.updateText('123')
},
methods: {
...mapMutations(['updateText'])
}
3. modules의mutation에 명칭 공간을 추가
modules: {
a: {
namespaced: true,
state: {
text: 1
},
mutations: {
updateText (state, text) {
console.log('a.state', state)
state.text = text
}
}
}
}
이름 공간이 있을 때 호출 방식
mounted () {
this['a/updateText']('123')
},
methods: {
...mapMutations(['a/updateText'])
}
4.modules의 Getter
modules: {
a: {
namespaced: true,
state: {
text: 1
},
getters: {
textPlus (state) {
return state.text + 1
}
}
}
}
computed: {
...mapGetters({
textPlus: 'a/textPlus'
})
}
5.modules의 Getter를 위한 전역state 호출
getters: {
textPlus (state, getters, rootState) {
return state.text + rootState.count
}
}
Getter는 다른 모듈의state를 호출합니다
getters: {
textPlus (state, getters, rootState) {
return state.text + rootState.b.text
}
}
6.modules의 action 전역의mutation 수정
actions: {
add ({state, commit, rootState}) {
commit('updateCount', rootState.count)
}
}
이 때, 컨트롤러가 오류
[vuex] unknown local mutation type: updateCount, global type: a/updateCount
를 보고할 때, 모듈이 전역적인mutation을 호출할 수 있도록 허용해야 합니다. add ({state, commit, rootState}) {
commit('updateCount', {num: 999}, {root: true})
}
7.modules b의 action은 modules a의mutation을 호출합니다
modules: {
a: {
namespaced: true,
state: {
text: 1
},
mutations: {
updateText (state, text) {
console.log('a.state', state)
state.text = text
}
}
},
b: {
actions: {
testAction ({commit}) {
commit('a/updateText', 'test text')
}
}
}
}
mounted () {
this.testAction()
},
methods: {
...mapActions(['testAction'])
}
modules b에 이름 공간을 추가합니다
b: {
namespaced: true,
state: {
text: 2
},
actions: {
testAction ({commit}) {
commit('a/updateText', 'test text', {root: true})
}
}
}
이 때 호출도 명칭 공간을 추가해야 합니다
mounted () {
this['b/testAction']()
},
methods: {
...mapActions(['b/testAction'])
}
module에서도 모듈을 끼워넣을 수 있습니다
동적 로드 모듈
// main.js
store.registerModule('c', {
state: {
text: 3
}
})
vuex에 업데이트 기능 추가
export default () => {
const store = new Vuex.Store({
strict: isDev,
state: defaultState,
mutations,
getters,
actions
})
if (module.hot) {
module.hot.accept([
'./state/state',
'./mutations/mutations',
'./getters/getters',
'./action/action'
], () => {
const newState = require('./state/state').default
const newMutations = require('./mutations/mutations').default
const newGetters = require('./getters/getters').default
const newActions = require('./action/action').default
store.hotUpdate({
state: newState,
mutations: newMutations,
getters: newGetters,
actions: newActions
})
})
}
return store
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.