色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue getter 子模塊

劉姿婷1年前8瀏覽0評論

在Vue開發中,我們經常會遇到需要從store中獲取state的情況,如果需要派生出一些計算屬性,就需要使用getter。Getter是一個函數,它可以從state中派生出一些狀態。Vuex中有一個特性,就是可以將store分割成子模塊,每個子模塊都有自己的state、mutation、action和getter。

在子模塊中,我們同樣可以定義getter,提供子模塊內部狀態的計算。如果在根級別上使用getter,我們可以通過類似的方式訪問它們:

store.getters['exampleGetter']
store.getters['myModule/exampleGetter']

這里的第一個 exampleGetter 是根級別的getter,第二個 exampleGetter 是 myModule 模塊中的getter。

在 myModule 中定義一個 getter:

const store = new Vuex.Store({
state:{
count: 0
},
getters: {
getCount: state =>{
return state.count
},
exampleGetter: (state, getters) =>(id) =>{
return getters.getCount + id
}
}
})

我們定義了兩個getter,getCount 是子模塊內部使用的,exampleGetter 是在引用外部使用的。注意到 exampleGetter 返回一個函數,這意味著我們可以在Vue組件中以參數的形式調用它。例如:

computed: {
result () {
return this.$store.getters['exampleGetter'](1)
}
}

這里的調用方式和普通的getter有所不同,這是因為 exampleGetter 是屬于 myModule 的。如果在根模塊內調用:this.$store.getters.exampleGetter就行了。

Getter的另一個特性是可以在其他getter內部使用。這在復雜的應用場景中非常有用。例如,我們可以創建一個 getter,它依賴于另一個 getter:

getters: {
exampleGetterOne: state =>state.a,
exampleGetterTwo: (state, getters) =>getters.exampleGetterOne + state.b
}

在 exampleGetterTwo 內部調用了 exampleGetterOne,并使用其結果來計算返回值。

最后需要注意的是,getter是一個純函數,它只依賴state和其他getter,不會對state進行修改。因此,它沒有對 Vuex 的全局狀態產生副作用。