Programing

값을 직접 가져오거나 설정하는 대신 게터 및 돌연변이를 사용해야 하는 이유

c10106 2022. 4. 1. 20:44
반응형

값을 직접 가져오거나 설정하는 대신 게터 및 돌연변이를 사용해야 하는 이유

다음 사이의 차이점:

this.currentLanguage = this.$store.getters.currentLanguage;

그리고 이는 게이터를 위한 것이다.

this.currentLanguage = this.$store.state.currentLanguage;

또한 다음과 같다.

this.$store.commit('setLanguages', this.languages);

돌연변이를 통해 동일한 결과를 얻을 수 있다.

this.$store.state.languages = this.languages;

나는 두 경우 모두 내가 원하는 것을 받고 있다.그리고 내가 getter/mutation을 쓸 필요가 없기 때문에 가치를 직접 얻는 것이 더 쉽다.왜 내가 게터/수업을 사용해야 하는가?

이 경우에는 게이터를 사용할 필요가 없다.Getter는 일반 Vue 구성 요소의 계산된 속성과 같으므로 데이터가 다른 데이터의 보다 복잡한 하위 항목인 경우에만 필요함.

하지만 돌연변이를 사용하길 원해 왜냐면 그게 그처럼 보일지라도this.$store.state.languages = this.languages제대로 작동하고 있는 건 아니에요.스토어에 따라 다른 구성요소가 있는 경우, 완전한 돌연변이 과정을 거치지 않았기 때문에 새로운 데이터를 수신하지 못할 수 있다.

당신이 돌연변이를 사용할 때 당신은 vue-devtools와 같은 것들에서 무엇이 변했는지에 대한 명확한 기록을 갖게 된다.그것은 또한 시간 여행 디버깅을 허용한다.

여기에 이미지 설명을 입력하십시오.

디버깅할 때 정말 좋다.

주 대 게이터는 훨씬 더 애매한 영역이다.나는 개인적으로 무언가 안에 있다고 생각하지 않아도 되는 것을 좋아한다.state또는 agetter만약 내가 필요하다면get내가 사용하는 가게의 물건getter.

그 질문은 Vuex Docs 그 자체로 꽤 잘 대답되었다.

다시 말하지만, 우리가 직접 store.state.count를 바꾸는 대신 돌연변이를 저지르는 이유는 명시적으로 추적하고 싶기 때문이다.이 간단한 협약은 당신의 의도를 더욱 분명하게 만들어, 당신이 코드를 읽을 때 당신의 앱의 상태 변화에 대해 더 잘 추론할 수 있도록 한다.게다가, 이것은 우리에게 모든 돌연변이를 기록하거나, 상태 스냅샷을 찍거나, 심지어 시간 여행 디버깅을 수행할 수 있는 도구를 구현할 기회를 준다.https://vuex.vuejs.org/guide/ - 거의 바닥

그래서 기본적으로 아이디어는 변화를 명시적으로 추적하는 겁니다.이를 통해 다른 도구들이 이러한 돌연변이와 행동에 직접 부착하고 코드를 추적할 수 있어 대규모 애플리케이션에 큰 이점이 된다.그것은 또한 당신의 코드를 더 읽기 쉽게 만들고 나중에 업데이트하는 것을 훨씬 더 쉽게 만들 것이다.그들이 항상 이동 중에 그것을 할 수 있는 한 가지 "방향" 없이 변하는 오래된 프로젝트를 읽어보십시오. 여기서 그런 일은 일어나지 않을 겁니다.

참조URL: https://stackoverflow.com/questions/52483142/why-should-i-use-getters-and-mutations-instead-if-getting-setting-value-direct

반응형