Рассмотрим простой Вью блог:
Я использую Vuex как мой датасторе и мне нужно создать два добытчиками : а getPost
поглотитель для извлечения post
по идентификатору, а также , listFeaturedPosts
что возвращает несколько первых символов каждого признакам пост. Схема хранилища данных для списка избранных сообщений ссылается на сообщения по их идентификаторам. Эти идентификаторы необходимо преобразовать в фактические сообщения для отображения отрывков.
магазин / 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',
]
}
магазин / 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);
}
магазин / 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
в примере выше?
Я тестировал без него
state
и не работал. Поэтомуstate
необходимо.это работает:
это не сработало
источник
state
объектgetters
и игнорируете второй аргумент, который будет фактическимgetters
объектом. Если бы выgetters
в этом примере занялись самоанализом , вы бы увидели, что это на самом деле ваш объект состояния.Геттеры получают другие геттеры в качестве второго аргумента
Вот ссылка на официальные документы - https://vuex.vuejs.org/guide/getters.html#property-style-access
источник
вместо передачи состояния передайте геттеры, а затем вызовите любой другой получатель, который хотите. Надеюсь, это поможет.
В вашем магазине / getters.js
источник
export default foo = ({ getters }) => { return getters.anyGetterYouWant }