【发布时间】:2021-02-23 16:00:40
【问题描述】:
我有一个作品组件,我在我的应用程序上使用不同的页面,我正在尝试根据路由和路由参数加载状态。
在我的 App.vue 文件中,我调度异步操作以获取类似的 json 文件
mounted() {
this.$store.dispatch('getData')
},
然后我像这样在我的作品组件中映射状态
export default {
name: 'Works',
computed: mapState({
works: (state) => state.works.home.items.slice(0, state.works.home.loadedCount),
loadedCount: (state) => state.works.home.loadedCount,
totalCount: (state) => state.works.home.items.length,
})
}
我实际上需要像 state.works[this.$router.currentRoute.params.category] 或基于路由名称一样根据路由动态映射状态。 您能否告诉我从我的状态获取数据(异步)的正确方法是什么?
Vuex 商店:
export default new Vuex.Store({
state: {
works: {
all: {
items: [],
loadedCount: 0,
},
home: {
items: [],
loadedCount: 0,
},
web: {
items: [],
loadedCount: 0,
},
print: {
items: [],
loadedCount: 0,
},
},
limit: 2,
},
mutations: {
SET_WORKS(state, works) {
state.works.all.items = works
works.map((el) => {
if (typeof state.works[el.category] !== 'undefined') {
state.works[el.category].items.push(el)
}
})
},
},
actions: {
getData({ commit }) {
axios
.get('/works.json')
.then((response) => {
commit('SET_WORKS', response.data.works)
})
},
},
})
【问题讨论】: