[Vuex] mutations

강냉이·2021년 1월 7일
0

vue.js 리뷰

목록 보기
3/6

mutations

📌 state값을 변경시키는 역할
📌 각각의 components에서 같은 기능을 하는 함수를 mutations내 만들고 묶어주면 훨씬 효율적이다.
📌 mutations을 각각의 components에서 실행시키는 행위를 commit이라고 한다.

📌 mutations 기본 사용방법

// store/index.js
mutations: {
 // state 값을 받아와야하기때문에 state 인자로 추가
 // 넘겨받은 값을 받을 수 있는 인자값 payload 추가
  addUsers: (state, payload) => {
    state.allUsers.push(payload)
  }
}
// components/xxx.vue
<script>
  import { mapMutations } from 'vuex'
  
  export default {
    methods: {
      ...mapMutations(['addUsers']),
      signUp() {
        // 여기에서 넘겨준 'abc' 가 store/index.js의 payload로 감
        this.addUsers('abc')
    }
  }
</script>

📌 mapMutations을 사용하지않고 commit을 통해 mutations을 실행시키는 방법

// components/xxx.vue
<script>  
  export default {
    methods: {
      signUp() {
      // commit으로 actions 실행
      // mutations 이름 'addUsers' 써줌
      // payload로 'abc' 넘겨줌
      this.$store.commit('addUsers', 'abc')
      }
  }
</script>

❗ mutations의 문제점 : mutations은 모든 기능이 동기로 동작한다. 그러므로 비동기 로직은 actions로 사용한다.

0개의 댓글