Rozważmy prosty blog Vue:
używam Vuex jako mojego magazynu danych i muszę skonfigurować dwa gettery : getPostpobierający do pobierania postwedług identyfikatora oraz listFeaturedPostszwracający kilka pierwszych znaków każdego polecanego postu. Schemat magazynu danych dla listy polecanych postów odwołuje się do postów według ich identyfikatorów. Te identyfikatory muszą być zamienione na rzeczywiste posty w celu pokazania fragmentów.
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
})
Zgodnie z dokumentacją za pomocą tego gettersparametru można uzyskać dostęp do innych metod pobierających. Jednak kiedy próbuję uzyskać dostęp gettersod wewnątrz listFeaturedPosts, jest pusta i pojawia się błąd w konsoli z powodu getters.getPostniezdefiniowania w tym kontekście.
Jak wywołać getPostfunkcję pobierającą Vuex od wewnątrz listFeaturedPostsw powyższym przykładzie?