Hãy xem xét một đơn giản Vue viết blog:
Tôi đang sử dụng Vuex như kho dữ liệu của tôi và tôi cần phải thiết lập hai thu khí : một getPost
getter để lấy một post
bằng ID, cũng như một listFeaturedPosts
rằng lợi nhuận vài ký tự đầu tiên của mỗi bài đặc trưng. Lược đồ kho dữ liệu cho danh sách bài đăng nổi bật tham chiếu đến các bài đăng theo ID của chúng. Các ID này cần được giải quyết thành các bài đăng thực tế nhằm mục đích hiển thị các đoạn trích.
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
})
Theo tài liệu, getters
tham số có thể được sử dụng để truy cập các getters khác. Tuy nhiên, khi tôi cố gắng truy cập getters
từ bên trong listFeaturedPosts
, nó trống rỗng và tôi gặp lỗi trong bảng điều khiển do getters.getPost
không được xác định trong ngữ cảnh đó.
Làm cách nào để gọi getPost
dưới dạng một bộ thu Vuex từ bên trong listFeaturedPosts
trong ví dụ trên?