Vue3/코딩애플 part3
[Vue/코딩애플/part3] 7. Vuex - store의 state 변경하는 방법(mutations, $store.commit)
김나나_
2024. 8. 5. 17:02
1. store.js 에 state 수정 방법을 정의한다.
2. 수정하고 싶으면 store.js 에 부탁한다.
state 수정 방법을
mutations : { } 에 정의하면 된다.
// store.js
import { createStore } from 'vuex'
const store = createStore({
state() {
return {
// state 보관은 여기에
name : 'kim',
age : 20
}
},
mutations : {
// state 수정 방법 정의
}
})
export default store
'kim' 이라는 name 을 'park' 으로 변경하고 싶다면 다음과 같이 정의한다.
// store.js
mutations : {
// state 수정 방법 정의
changeNm (state) {
state.name = 'park'
}
}
this.name 이 아니라, state.name 으로 접근한다는 것에 주의한다.
(첫번째 파라미터는 위에 정의한 state를 의미)
이제 store.js 에 정의한 함수를 호출하려면
$store.commit(함수명)
<button @click="$store.commit('changeNm')"> store 데이터 변경하기</button>
버튼을 누르면 kim 에서 park 으로 잘 변경되고 있다.
🔎 store.js 의 장점
- state 변경은 store.js 만 한다 => 이제 state 이상하면 store.js 를 살피면 된다 (디버깅 편리)
mutations 에 데이터를 보내고 싶다면/.
<button @click="$store.commit('changeAge', 10)"> 나이 변경하기</button>
changeAge 라는 age 를 증가시켜주는 함수에 10이라는 데이터를 보내고 싶다면 increaseAge 함수에 파라미터를 추가하면 된다.
increaseAge (state, data) {
state.age += data;
}
data 에 10이라는 숫자가 들어온다.