์ฐธ๊ณ ํ ๊ฒ์๋ฌผ >
https://xn--xy1bk56a.run/vuex/3-cart/
https://joshua1988.github.io/web-development/vuejs/vuex-start/
1. vuex ์ค์น, ์ค์
1) vuex ์ค์น
NPM ์ค์น ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Vuex ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ค์นํ๋ค.
npm install vuex
2) vuex ํ๋ฌ๊ทธ์ธ ๋ฑ๋ก
ํ๋ก์ ํธ ๋ฃจํธ ์์น์ store/index.js ํ์ผ์ ๋ง๋ ํ, Vuex ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Vue ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ฑ๋กํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ Vuex๋ฅผ ํตํด Store ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ตฌ๋ฌธ์ ์ค์ ํ๋ค.
// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export const store = new Vuex.Store({
// ์คํ ์ด ๊ฐ์ฒด ์ต์
์ค์
})
- vuex ์์ฑ ์ค์
์คํ ์ด ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์์ ์ค์ ๊ฐ๋ฅํ ์์ฑ์ ํ์์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ค.
const store = new Vuex.Store({
state: { ... }, // = ๋ฐ์ดํฐ (data)
getters: { ... }, // = ๊ณ์ฐ๋ ์์ฑ (computed Properties)
mutations: { ... }, // = ๋ฐ์ดํฐ ๋ณ๊ฒฝ (sync)
actions: { ... } // = ๋ฉ์๋ (methods, async)
})
3) ํ๋ก์ ํธ์ main.js์ store.js ๋ฑ๋ก
// main.js
import Vue from "vue";
import App from "./App.vue";
// store.js๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋
import { store } from "./store";
new Vue({
el: "#app",
// ๋ทฐ ์ธ์คํด์ค์ store ์์ฑ์ ์ฐ๊ฒฐ
store: store,
render: h => h(App)
});
2. ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
1) store.js์ state ์ถ๊ฐ
export const store = new Vuex.Store({
// counter๋ผ๋ state ์์ฑ์ ์ถ๊ฐ
state: {
counter: 0
}
});
2) ์์ ์ปดํฌ๋ํธ์์ state์ ์ ๊ทผ
<!-- App.vue(Parent) -->
</template>
<div id="app">
Parent counter : {{ $store.state.counter }} <br />
<button @click="addCounter">+</button>
<button @click="subCounter">-</button>
<!-- ๊ธฐ์กด ์ฝ๋ -->
<!-- <child v-bind:num="counter"></child> -->
<child></child>
</div>
</template>
<script>
import Child from "./Child.vue";
export default {
components: {
child: Child
},
methods: {
addCounter() {
this.$store.state.counter++;
},
subCounter() {
this.$store.state.counter--;
}
}
};
</script>
3) ํ์ ์ปดํฌ๋ํธ์์ state์ ์ ๊ทผ
<template>
<div>
Child counter : {{ $store.state.counter }}
<button>+</button>
<button>-</button>
</div>
</template>
'๐ก์น ํ๋ก์ ํธ > (ํ๋ก ํธ์๋) ๋ง์ผ์ปฌ๋ฆฌ - ํด๋ก ์ฝ๋ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
vuex ์ํ๋ณ ๋ฆฌ๋ทฐ ๋ทฐ์ด (0) | 2021.07.20 |
---|---|
vuex ์ฅ๋ฐ๊ตฌ๋ ๊ตฌํ (0) | 2021.07.18 |
vue์ ๋ถํธ์คํธ๋ฉ ์ ์ฉ (0) | 2021.07.16 |
vue ํ๋ก์ ํธ ์์ฑ (0) | 2021.07.16 |
์น ๊ธฐํ (0) | 2021.07.16 |