考虑一个简单的Vue博客:
我正在使用Vuex作为数据存储,我需要设置两个getter:一个getPost
用于post
通过ID检索ID的getter ,以及一个listFeaturedPosts
用于返回每个精选文章的前几个字符的getter 。特色帖子列表的数据存储架构通过其ID引用帖子。为了显示摘录,这些ID必须解析为实际帖子。
store / 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',
]
}
store / 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
})
根据文档,该getters
参数可用于访问其他获取器。但是,当我尝试getters
从内部访问时listFeaturedPosts
,它为空,并且由于getters.getPost
在该上下文中未定义而在控制台中收到错误。
在上面的示例中,如何getPost
从内部调用Vuex吸气剂listFeaturedPosts
?