Vue.js
Vuex
낭만장이
2020. 1. 13. 22:24
- Vuex란
- 무수히 많은 컴포넌트의 데이터를 관리하기 위한 상태 관리 패턴이자 라이브러리
- React의 Flux패턴에서 기인
- 주요 속성
- state : 여러 컴포넌트에 공유되는 데이터 Data
- getters : 연산된 state값을 접근하는 속성 computed
- mutations : state값을 변경하는 이벤트 로직/메소드 method
- actions : 비동기 처리 로직을 선언하는 method
- state 란?
- 여러 컴포넌트 간에 공유할 데이터 - 상태
- mutations 란?
- state 의 값을 변경할 수 있는 유일한 방법이자 메소드
- mutations 은 commit() 으로 동작시킨다.
- state를 변경하기 위해 mutations를 동작시킬 때 인자(payload)를 전달할 수 있음.
- state는 왜 직접 변경하지 않고 mutations 로 변경할까?
- state값을 변경하는 경우 어느 컴포넌트에서 해당 state를 변경했는지 추적하기가 어렵다
- 특정 시점에 어떤 컴포넌트가 state를 접근하여 변경한 건지 확인하기 어렵기 때문.
- 따라서, 뷰의 반응성을 거스르지 않게 명시적으로 상태 변화를 수행. 반응성, 디거빙, 테스팅 혜택
- Actions 란?
- 비동기 처리로직을 선언하는 메소드, 비동기 로직을 담당하는 mutations
- 데이터 요청, Promise, ES6 async과 같은 비동기 처리는 모두 actions에 선언
- 왜 비동기처리 로직은 actions 에 선언해야 할까?
- 언제 어느 컴포넌트에서 해당 state를 호출하고, 변경했는지 확인하기가 어려움.