Розглянемо простий блог Vue:
я використовую Vuex як свій сховище даних, і мені потрібно встановити два геттери : getPost
геттер для отримання post
ідентифікатора, а також той, listFeaturedPosts
який повертає перші кілька символів кожного представленого повідомлення. Схема сховища даних для переліку пропонованих публікацій посилається на публікації за їх ідентифікаторами. Ці ідентифікатори потрібно перетворити на фактичні посади з метою показу уривків.
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
})
Згідно з документацією, getters
параметр можна використовувати для доступу до інших геттерів. Однак, коли я намагаюся отримати доступ getters
зсередини listFeaturedPosts
, він порожній, і я отримую помилку в консолі через getters.getPost
невизначеність у цьому контексті.
Як мені зателефонувати getPost
як отримувач Vuex зсередини listFeaturedPosts
у прикладі вище?