Comment appeler un getter d'un autre getter à Vuex?
Envisager une simple Vue blog:
J'utilise Vuex comme datastore et j'ai besoin d'en configurer deux getters:getPost
getter pour la récupération d'un post
par ID, ainsi que d'un listFeaturedPosts
qui renvoie les premiers caractères de chaque article sélectionné. Le schéma de datastore pour la liste des billets présentés renvoie aux billets par leur IDs. Ces ID doivent être résolus à des postes réels aux fins de montrer la extrait.
magasin/de l'é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
paramètre peut être utilisé pour accéder à d'autres méthodes. Cependant, lorsque j'essaie d'accéder à getters
à partir de listFeaturedPosts
, c'est vide, et je reçois une erreur dans la console due à getters.getPost
être indéfini dans ce contexte.
Comment dois-je appeler getPost
comme un getter Vuex de l'intérieur listFeaturedPosts
dans l'exemple ci-dessus?
3 réponses
la réponse D'Angie est proche....
Dans VueJS 2.0, vous passerez state
et getters
. Cela devrait donc fonctionner en magasin / getters.js:
export default foo = (state, getters) => {
return getters.yourGetter
}
j'ai Testé sans state est nécessaire.
ceci fonctionne:
export default foo = (state, getters) => {
return getters.yourGetter
}
cela n'a pas fonctionné
export default foo = (getters) => {
return getters.yourGetter
}
au lieu de passer état, pass getters puis appelez n'importe quel autre getter que vous voulez. Espérons que cela aide.
export default foo = (getters) => {
return getters.anyGetterYouWant
}