Rozważmy prosty blog Vue:
używam Vuex jako mojego magazynu danych i muszę skonfigurować dwa gettery : getPost
pobierający do pobierania post
według identyfikatora oraz listFeaturedPosts
zwracają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 getters
parametru można uzyskać dostęp do innych metod pobierających. Jednak kiedy próbuję uzyskać dostęp getters
od wewnątrz listFeaturedPosts
, jest pusta i pojawia się błąd w konsoli z powodu getters.getPost
niezdefiniowania w tym kontekście.
Jak wywołać getPost
funkcję pobierającą Vuex od wewnątrz listFeaturedPosts
w powyższym przykładzie?