뮤테이션
setBooks 추가
books
상태(state)를 업데이트 하는 setBooks
뮤테이션을 추가합니다.
NOTE
Vuex 스토어의 뮤테이션(mutations
)은 Vue 컴포넌트의 메소드(methods
)와 유사합니다.
// store/index.js
new Vuex.Store({
state: {
books: []
},
mutations: {
setBooks(state, books) {
state.books = books
}
}
})
NOTE
뮤테이션 메서드는 첫번째 인자로 상태(state)를 전달 받고, 뒤이어 페이로드(payload)를 전달 받습니다.
용어 | 설명 |
---|---|
state | 기억되는 시스템의 상태 |
payload | 전송되는 데이터 |
상태 업데이트
BookList.vue
파일의 로직 코드를 다음과 같이 수정합니다.
store
객체를 임포트 합니다.books
데이터를 페이로드로 전달하는setBooks
뮤테이션을 커밋(commit) 합니다.state.books
상태가 업데이트 되면 컴포넌트 속성books
가 계산되도록 설정합니다.
// components/BookList.vue
import shop from "../api/shop";
import store from "@/store"; // [1]
export default {
name: "BookList",
computed: {
books() {
return store.state.books; // [3]
}
},
created() {
shop.getBooks(books => {
store.commit("setBooks", books); // [2]
});
}
}
NOTE
뮤테이션을 실행할 때, 스토어 객체의 커밋 메서드를 사용합니다.
store.commit('뮤테이션_이름', 페이로드)
개발도구 Vuex 확인
Vue Devtools 개발도구의 Vuex 탭을 선택하면 초기 상태(Base State
)와 setBooks
뮤테이션이 처리한 결과가 기록됨을 확인할 수 있습니다.
초기 상태에서는 state.books
데이터가 빈 배열이었지만, setBooks
뮤테이션이 실행된 후에는 데이터가 채워집니다.