考慮一個簡單的Vue博客。我使用Vuex作爲數據存儲,我需要設置兩個getters:一個getPost
獲取器,用於通過ID檢索post
,以及返回每個有特色的帖子的前幾個字符的listFeaturedPosts
。特色帖子列表的數據存儲架構通過其ID來引用帖子。爲了顯示摘錄,這些ID需要解析爲實際的帖子。如何從Vuex中的另一個吸氣器調用吸氣劑?
存儲/ state.js
export const state = {
featuredPosts: [2, 0],
posts: [
'Lorem et ipsum dolor sit amet',
'Lorem et ipsum dolor sit amet',
'Lorem et ipsum dolor sit amet',
'Lorem et ipsum dolor sit amet',
'Lorem et ipsum dolor sit amet',
]
}
存儲/ getters.js
export default getPost = (state) => (postID) => {
return state.posts[postID]
}
export default listFeaturedPosts = (state, getters) =>() => {
console.log(getters) // {}
return state.featuredPosts.map(postID => getters.getPost(postID).substring(0, EXCERPT_LENGTH);
}
存儲/ index.js
import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import * as getters from './getters'
import * as mutations from './mutations'
Vue.use(Vuex)
export default new Vuex.Store({
state,
getters,
mutations
})
Accordin g到文檔中,getters
參數可以用來訪問其他getter。但是,當我嘗試從listFeaturedPosts
內部訪問getters
時,它是空的,並且由於在該上下文中未定義getters.getPost
,所以在控制檯中出現錯誤。
在上面的例子中,我如何從listFeaturedPosts
內部調用getPost
作爲Vuex吸氣劑?