如何从 Vuex 中的不同命名空间模块访问 rootGetters?
How do I access rootGetters from a different namespaced module in Vuex?
我有一个名为 'forms' 的 Vuex 模块。我有一个名为 'users'.
的不同(也命名空间)模块
我正在使用 Vuexfire(这是我第一次使用,我认为这让我感到困惑)。并有一个像这样工作的动作:
const actions = {
loadPendingHoursRequests: firestoreAction((context) => {
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
.where('submittedToUID', '==', "iTd865JKWXRmhz2D2mtW7KIpL7a2"))
}),
这按预期工作并在 Firestore 和 Vuex 之间创建了实时连接。问题是我希望“iTd865JKWXRmhz2D2mtW7KIpL7a2”是从 'users' 模块中提取的动态值。
我完全迷路了。如果我这样重构:
loadPendingHoursRequests ({ dispatch, commit, getters, rootGetters }) {
let uid = rootGetters['users/currentUserUID'];
console.log(uid)
firestoreAction((context) => {
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours').where('submittedToUID', '==', uid))
})
}
上面的console.logreturns'undefined'。即使我删除了 .where('submittedToUID', '==', uid)
,firestoreAction 也不起作用。
提前致谢。我很想知道我在这里不理解的地方。
未经测试(我不使用 VuexFire)但假设 bindFirestoreRef
需要 context
对象,您也可以访问 rootGetters
作为它的 属性 .将这两个片段放在一起是这样的:
const actions = {
loadPendingHoursRequests: firestoreAction((context) => {
const uid = context.rootGetters['users/currentUserUID'];
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
.where('submittedToUID', '==', uid))
})
}
我有一个名为 'forms' 的 Vuex 模块。我有一个名为 'users'.
的不同(也命名空间)模块我正在使用 Vuexfire(这是我第一次使用,我认为这让我感到困惑)。并有一个像这样工作的动作:
const actions = {
loadPendingHoursRequests: firestoreAction((context) => {
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
.where('submittedToUID', '==', "iTd865JKWXRmhz2D2mtW7KIpL7a2"))
}),
这按预期工作并在 Firestore 和 Vuex 之间创建了实时连接。问题是我希望“iTd865JKWXRmhz2D2mtW7KIpL7a2”是从 'users' 模块中提取的动态值。
我完全迷路了。如果我这样重构:
loadPendingHoursRequests ({ dispatch, commit, getters, rootGetters }) {
let uid = rootGetters['users/currentUserUID'];
console.log(uid)
firestoreAction((context) => {
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours').where('submittedToUID', '==', uid))
})
}
上面的console.logreturns'undefined'。即使我删除了 .where('submittedToUID', '==', uid)
,firestoreAction 也不起作用。
提前致谢。我很想知道我在这里不理解的地方。
未经测试(我不使用 VuexFire)但假设 bindFirestoreRef
需要 context
对象,您也可以访问 rootGetters
作为它的 属性 .将这两个片段放在一起是这样的:
const actions = {
loadPendingHoursRequests: firestoreAction((context) => {
const uid = context.rootGetters['users/currentUserUID'];
context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
.where('submittedToUID', '==', uid))
})
}