Considérons un simple blog Vue :
J'utilise Vuex comme base de données et j'ai besoin de mettre en place deux systèmes de gestion des données. getters : a getPost
pour récupérer un post
par ID, ainsi qu'un listFeaturedPosts
qui renvoie les premiers caractères de chaque article vedette. Le schéma du datastore pour la liste des articles vedettes référence les articles par leurs ID. Ces ID doivent être résolus en articles réels afin d'afficher les extraits.
magasin/état.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',
]
}
magasin/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);
}
magasin/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
})
Selon la documentation, le getters
peut être utilisé pour accéder à d'autres getters. Cependant, lorsque j'essaie d'accéder à getters
de l'intérieur listFeaturedPosts
il est vide, et j'obtiens une erreur dans la console en raison de getters.getPost
étant indéfini dans ce contexte.
Comment puis-je appeler getPost
comme un getter Vuex à l'intérieur listFeaturedPosts
dans l'exemple ci-dessus ?