Vue가 mapState에 정의한 속성에 값을 부여하여 오류를 보고하는 문제 해결

1. 실천 환경
Vue 2.9.6
2. 문제 설명

<script>
import { mapState } from 'vuex';
export default {
 name: "displayCount",
 computed: {
  ...mapState({
   ... 
   count: state => state.a.count
  })
 },
 methods: {
  increaseCount () {
   this.count = this.count + 1
  }
 }
};
</script>
<style>
</style>
위와 같이, 우리는 increaseCount 함수를 실행할 때, 맵state 함수에 정의된this를 비추기를 희망합니다.count 부여, 이 값에 1 증가, 결과, 알림
[Vue warn]: Computed property "count"was assigned to but it has no setter.
3. 솔루션 1
아래와 같이 속성을 "mapState에서 이동"한 다음에 속성에 get, set 방법을 추가합니다. 각각 값을 가져오고 변경하는 데 사용됩니다. (store 상태 관리에 따라 규정된 방식)

<script>
import { mapState } from 'vuex';
export default {
 name: "displayCount",
 computed: {
  ...mapState({
... 
  }),
  count: {
   get() {
    return this.$store.state.a.count;
   },
   set(val) {
    this.$store.commit("increaseCount", val);
   }
  }
 },
 methods: {
  increaseCount () {
   this.count = this.count + 1
  }
 }
};
</script>
주의: this.$store.commit("increaseCount", val);의 increaseCount 방법 이름은 methods에서 정의한 방법 이름이 아니라store에서 정의한 방법 이름입니다.
4. 솔루션 2
현재 속성 값과store 상태 값을 비교한 다음, 비교 결과에 따라store 상태 관리 규칙에 따라 상태 값을 업데이트할지 결정합니다.

<script>
import { mapState } from 'vuex';
export default {
 name: "displayCount",
 computed: {
  ...mapState({
   count: state => state.a.count
  })
 },
 methods: {
  increaseCount () {
   if (this.count == this.$store.state.a.count) {
    this.$store.commit("increaseCount", this.count+1);
   }
  }
 }
};
</script>
총결산
Vue가mapState에 정의된 속성 부여 오류를 해결하는 문제에 관한 이 글은 여기에 소개되었습니다. 더 많은 관련 vue가mapState 속성 부여 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기