programing

Vuex에 있는 다른 이름의 getters에 액세스하는 방법

prostudy 2022. 4. 11. 21:30
반응형

Vuex에 있는 다른 이름의 getters에 액세스하는 방법

나는 '양식'이라는 이름의 Vuex 모듈을 가지고 있다.나는 '사용자'라는 이름의 다른 (이름도 앞지르는) 모듈을 가지고 있다.

나는 Vuexfire를 사용하고 있다. (처음, 내가 생각하는 것은 나를 흥분시키는 것이다.)그리고 다음과 같은 조치를 취하십시오.

      const actions = {
      loadPendingHoursRequests: firestoreAction((context) => {
        context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
        .where('submittedToUID', '==', "iTd865JKWXRmhz2D2mtW7KIpL7a2"))
      }),

이것은 예상대로 작동하며, Firestore와 Vuex 사이에 실시간 연결을 생성한다.문제는 "iTd865JKWXRMhz2D2mtW7KIPL7a2"가 '사용자' 모듈에서 도출된 동적 값이 되기를 원한다는 것이다.

난 그냥 완전히 길을 잃었어.이렇게 리팩터링하면:

  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.log가 '정의되지 않음'을 반환함그리고 만약 내가 그것을 제거한다고 해도.where('submittedToUID', '==', uid), 소방관Action은 어쨌든 작동하지 않는다.

미리 고맙다.내가 이해하지 못하는 것이 무엇인지 알고 싶다.

테스트되지 않음(VuexFire를 사용하지 않음) 그러나bindFirestoreRef이 필요하다context객체, 액세스할 수 있음rootGetters그 소유물로도 말이야두 개의 스니펫을 합치면 이렇게 된다.

const actions = {
  loadPendingHoursRequests: firestoreAction((context) => {
    const uid = context.rootGetters['users/currentUserUID'];
    context.bindFirestoreRef('pendingHoursRequests', db.collection('hours')
      .where('submittedToUID', '==', uid))
  })
}

참조URL: https://stackoverflow.com/questions/66231508/how-do-i-access-rootgetters-from-a-different-namespaced-module-in-vuex

반응형