# actions
์ก์ (actions)์ ๋ฎคํ ์ด์ ์ค์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง๋ค์ ์ ์ํ๋ ์์ฑ์ ๋๋ค. ๋๊ธฐ ์ฒ๋ฆฌ๋ ๋ฎคํ ์ด์ , ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ์ก์ ์ผ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ํน์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋ํด์ ์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ด ๊ธ (opens new window)์ ์ฐธ๊ณ ํ์ธ์.
# actions ์ ์ธ
์ก์
์ ์ ์ํ๋ ์ฝ๋์
๋๋ค. ์ ๋ฎคํ
์ด์
์ฑํฐ์์ ์ดํด๋ดค๋ ์ฝ๋๋ฅผ ์ด์ง ๋ฐ๊ฟ๋ดค์ต๋๋ค. ๋ฎคํ
์ด์
์ฝ๋์์๋ ์ปดํฌ๋ํธ ๋จ์์ commit('reverseMessage')
API๋ฅผ ํธ์ถํ์ฌ state ์์ฑ์ ์ ์๋์ด ์๋ ์ํ ๊ฐ์ ๋ณํํ์ต๋๋ค.
new Vuex.Store({
state: {
message: ''
},
mutations: {
reverseMessage(state, data) {
state.message = data.split('').reverse().join('');
}
},
actions: {
fetchMessage(context) {
axios.get(url).then(function(response) {
context.commit('reverseMessage', response.message);
});
}
}
})
์ด๋ฒ์๋ ์ปดํฌ๋ํธ ๋จ์์ ์ก์
์ ํธ์ถํ๊ณ ๋๋ฉด fetchMessage()
๋ผ๋ ์ก์
๋ฉ์๋๊ฐ ๋์ํฉ๋๋ค. fetchMessage()
๋ฉ์๋๋ HTTP ํต์ ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ์ฝ๋๊ฐ ๋๊ณ , GET ์์ฒญ์ ์๋ต์ผ๋ก ์จ ๊ฐ์ ๋ฎคํ
์ด์
์ ์ธ์๋ก ๋๊ฒจ์ ์ญ์์ผ๋ก ๋ณํํ ๋ค์์ message
์ํ ๊ฐ์ ๋ด์์ค๋๋ค.
# actions ํธ์ถ
์ก์ ์ ์ปดํฌ๋ํธ์์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
new Vue({
methods: {
getMessage() {
this.$store.dispatch('fetchMessage');
}
}
})
getMessage()
๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ก์
์ fetchMessage()
์์ฑ ํจ์๊ฐ ์คํ๋ฉ๋๋ค.