考虑一个简单的 Vue 博客:
我正在使用 Vuex 作为我的数据存储,我需要设置两个 获得者: 一个 getPost
getter 用于检索 post
的 ID,以及一个 listFeaturedPosts
返回每篇特色文章的前几个字符。特色文章列表的数据存储模式通过 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);
}
Store/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
参数访问其他 getter。但是,当我尝试从 listFeaturedPosts
内部访问 getters
时,它是空的,并且由于在该上下文中没有定义 getters.getPost
,我在控制台中得到一个错误。
在上面的例子中,如何从 listFeaturedPosts
内部调用 getPost
作为一个 Vuex getter 函数?