with type read mutations mapactions getters from example actions vuejs2 vuex

vuejs2 - type - ¿Cómo llamo a un captador de otro captador en Vuex?



vuex map store (3)

Considera un simple blog de Vue:
Estoy usando Vuex como mi almacén de datos y necesito configurar dos captadores: un captador getPost para recuperar una post por ID, así como una lista de listFeaturedPosts que devuelve los primeros caracteres de cada publicación destacada. El esquema del almacén de datos para la lista de publicaciones destacadas hace referencia a las publicaciones por sus ID. Estas identificaciones deben resolverse en publicaciones reales con el fin de mostrar los extractos.

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'', ] }

tienda / 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 })

Según la documentación, el parámetro getters se puede utilizar para acceder a otros getters. Sin embargo, cuando intento acceder a los listFeaturedPosts desde dentro de listFeaturedPosts , está vacío y listFeaturedPosts un error en la consola debido a que getters.getPost no está definido en ese contexto.

¿Cómo llamo a getPost como Vuex getter desde dentro de listFeaturedPosts en el ejemplo anterior?


La respuesta de Angie es cercana ...

En VueJS 2.0, pasará el state y getters . Así que esto debería funcionar en store / getters.js :

export default foo = (state, getters) => { return getters.yourGetter }


Probé sin state y no funcionó en vuejs 2.5.16. Es por eso que el state es necesario.

esto funciona:

export default foo = (state, getters) => { return getters.yourGetter }

esto no funcionó

export default foo = (getters) => { return getters.yourGetter }


en lugar de pasar el estado , pase a los captadores y luego llame a cualquier otro captador que desee. Espero eso ayude.

En tu tienda / getters.js

export default foo = (getters) => { return getters.anyGetterYouWant }