programing

Vuex에서는 mapGetters가 mapState와 동일한 구문을 받아들이지 않는 이유는 무엇입니까?

sourcetip 2022. 7. 9. 09:43
반응형

Vuex에서는 mapGetters가 mapState와 동일한 구문을 받아들이지 않는 이유는 무엇입니까?

Vue 컴포넌트는 Vue 스토어에서 상태, 돌연변이, 액션 및 getter를 매핑합니다.

import {mapState, mapMutations, mapActions, mapGetters} from 'vuex'
export default {
  name: 'DefaultLayout',
  computed: {
    ...mapState({
      settings: (state) => state.settings,
      language: (state) => state.language
    }),
    ...mapState([
      'changeRouteTo'
    ]),
    ...mapGetters([
      'isLoggedIn'
    ])
  }
...

문제는, 나는 그것을 얻을 수 없다는 것이다....mapGetters첫 번째 인스턴스에서처럼 명시적인 구문을 사용하여 작업할 수 있습니다....mapState위에.

해봤어요

...mapGetters({
  isLoggedIn: (state) => state.getters.isLoggedIn
})

그리고.

...mapGetters({
  isLoggedIn: (state) => state.isLoggedIn
})

그리고.

...mapGetters({
  isLoggedIn: (state) => this.$store.getters.isLoggedIn
})

단,

...mapGetters([
  'isLoggedIn'
])

효과가 있는 것 같아요.

에서 개체를 사용하려면...mapGetters구문은 다음과 같습니다.

...mapGetters({
  isLoggedIn: 'isLoggedIn'
})

여기서 key는 getter가 매핑할 이름이고 value는 getter의 문자열 이름입니다.

mapGetters를 사용하여 getters를 사용하여 주의 일부 슬라이스에 액세스해야 합니다. 예를 들어 스토어에는 다음과 같은 것이 있습니다.

const state = {
  isLoggedIn:''
}

const getters = {
  isLoggedIn(state) {
    return state.isLoggedIn
   }
}
export default {
  state,
  getters
}

컴포넌트에서는 islogged에 접속할 수 있습니다.이런 부동산에서

 computed: {
      ...mapGetters(['isLoggedIn'])
    },

이제 isLogged에 액세스 할 수 있게 되었습니다.속성에서 mapGetters는 스토어의 슬라이스를 반환하는 get 함수에 액세스할 수 있기 때문에 get 함수를 다시 쓸 필요가 없으며 getters에서 로직을 해야 한다는 상태를 전달할 필요가 없습니다.이것이 목적입니다.

위의 답변은 모두 맞았지만, "왜?"라는 질문에는 답하지 않았습니다.그래서 의사들도 그것에 대답하지 않는다.-아쉽다.제 의견을 말씀드리겠습니다.

VueX getter는 이미 필요한 모든 작업을 수행해야 합니다.VueX는 대규모 애플리케이션을 대상으로 하고 있습니다.따라서 상태 또는 기본 상태(getters)에서 파생된 상태가 여러 곳에서 사용될 가능성이 높습니다.

Getter는 이미 VueX 상태에 액세스할 수 있습니다(상태에서 파생됨). 다른 VueX getter에도 액세스할 수 있습니다.

getter를 조작할 필요가 있는 경우는, 다른 getter를 작성해, 간단하게 Import 해 주세요.

언급URL : https://stackoverflow.com/questions/51099619/with-vuex-why-isnt-mapgetters-accepting-the-same-syntax-as-mapstate

반응형