반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 오라클
- 정보처리기사요약
- 코딩테스트
- 자바의정석
- 정보처리기사실기
- 평일코딩
- 정보처리기사실기요약
- 스프링
- javascript
- 정보처리기사실기정리
- 자바스크립트 코딩테스트
- 이안의평일코딩
- CSS
- 리액트
- 국비코딩
- Java의정석
- 리액트네이티브
- Oracle
- php
- 자바스크립트
- 정보처리기사정리
- 타입스크립트
- react
- VUE
- 자스코테
- typescript
- 국비IT
- spring
- 정보처리기사
- ReactNative
Archives
- Today
- Total
이안의 평일코딩
[Vue] Vuex(2) - state 변경 (mutations, $store.commit()) 본문
반응형
state 변경
state 변경은 store.js만 한다. state 이상이 생기면 store.js를 보자.
store.js
import { createStore } from 'vuex'
const store = createStore({
state () {
return {
name : 'lee',
age : 20
}
},
mutations :{
changeName(state){
state.name = 'park'
},
changeAge(state, payload){
//state.age++;
state.age += data
}
}
})
export default store;
먼저 store.js에 state를 수정하기 위한 방법을 mutations에 함수 정의한다.
전달할 데이터를 App.vue에서 payload에 넣어서 받아오면 된다.
App.vue
<template>
<p> {{ $store.state.name }} </p>
<p> {{ $store.state.age }} </p>
<button @click="$store.commit('changeName')">버튼</button>
<button @click="$store.commit('changeAge', 10)">버튼</button>
</template>
수정하고 싶으면 store.js에 $store.commit(함수명) 부탁한다.
응용 예제
인스타그램 좋아요를 구현해보자. 좋아요 수를 likes라는 숫자 state로 좋아요 클릭 여부를 likeClick 불리언 state로 한다.
store.js
import { createStore } from 'vuex'
const store = createStore({
state () {
return {
likes : 30,
likeClick : false,
}
},
mutations :{
instaLike(state){
if(state.likeClick == false){
state.likes++;
state.likeClick = true;
} else {
state.likes--;
state.likeClick = false;
}
},
}
})
export default store;
그리고 vue파일에 적용시켜 준다.
<template>
<div @click="$store.commit('instaLike')" :style="{ backgroundImage : `url(${instaData.postImage})`}"></div>
</template>
반응형
'Front-end > Vue' 카테고리의 다른 글
[Vue] Vuex(4) - computed, mapState, mapMutations, mapActions (0) | 2021.05.19 |
---|---|
[Vue] Vuex(3) - actions, $store.dispatch(), context (0) | 2021.05.18 |
[Vue] Vuex(1) - 설치 및 셋팅 (store.js, $store.state.데이터명) (0) | 2021.05.18 |
[Vue] 라이브러리 전역에서 사용하기 (0) | 2021.05.17 |
[Vue] props 대신 slot을 써보자 (0) | 2021.05.14 |
Comments