พิจารณาง่าย Vue บล็อก:
ฉันใช้ Vuex เป็นเก็บข้อมูลของฉันและฉันต้องตั้งค่าสองgettersก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 อื่น ๆ อย่างไรก็ตามเมื่อฉันพยายามเข้าถึงgetters
จากภายในlistFeaturedPosts
มันว่างเปล่าและฉันได้รับข้อผิดพลาดในคอนโซลเนื่องจากgetters.getPost
ไม่ได้กำหนดไว้ในบริบทนั้น
ฉันจะเรียกgetPost
เป็น Vuex getter จากภายในlistFeaturedPosts
ในตัวอย่างด้านบนได้อย่างไร