728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
π λ€μ΄κ°κΈ° μ μ
- Vue μμλ state λ₯Ό μμ ν λ mutations μ ν¨μλ₯Ό λ§λ ν, μ΄λ₯Ό μ΄μ©ν΄μ μμ νλ κ²μ΄λΌκ³ 곡λΆνλ€.
- νμ§λ§, μλ²μμ λ°μ΄ν°λ₯Ό κ°μ Έμ μμ νκ³ μΆμ λμλ actions λΌλ νλͺ©μ λ§λ ν, μ¬κΈ°μμ μλ²λ‘ ajax μμ²μ ν΄μ£Όμ΄μΌ νλ€.
- μλνλ©΄ mutations νλͺ©μ ν¨μλ₯Ό λ§λ€ λ, λ΄λΆμ ajax μ κ°μ΄ μλμ μΌλ‘ μκ°μ΄ μ€λ 걸리λ μ½λλ₯Ό μ μ΄λμΌλ©΄, JavaScript κ° μ΄λ κ² μκ°μ΄ μ€λ 걸리λ μ½λλ μ μ³λκ³ λ€μ μ€λΆν° μ€ννλ €λ κ²½ν₯μ΄ μμ΄μ μλνμ§ μμ λ²κ·Έκ° λ°μν μ μκΈ° λλ¬Έμ΄λ€.
- λ°λΌμ, state λ₯Ό μμ νλ μ©λλ‘λ§ mutations νλͺ©μ μ¬μ©νκ³ , ajax μ κ°μ΄ μκ°μ΄ μ€λ 걸리λ μ½λλ actions νλͺ©μ μ¬μ©νλ κ²μ΄ μ’λ€.
π actions λ§λ€μ΄ μ¬μ©νκΈ°
const store = createStore({
state(){
return {
// state μμ±
}
},
mutations: {
// state λ³κ²½ ν¨μ μμ±
},
actions: {
// μκ°μ΄ μ€λ 걸리λ ν¨μ μμ±
getData(){
axios.get('').then(()=>{
// GET μμ² μ±κ³΅ν κ²½μ° μ€νν μ½λ
}).catch(()=>{
// GET μμ² μ€ν¨ν κ²½μ° μ€νν μ½λ
})
}
},
})
- mutations νλͺ©μ λ§λ€ λμ²λΌ actions νλͺ©μ λ§λ€κ³ , κ·Έ μμ ν¨μννλ‘ μμ±ν΄μ£Όλ©΄ λλ€.
- μ΄μ λ€λ₯Έ vue νμΌμμ $store.dispatch('getData') μ κ°μ΄ actions νλͺ© λ΄μ νΉμ ν¨μλ₯Ό λΆλ¬μ€λ©΄ vue νμΌλ‘ λ°μ΄ν°λ₯Ό κ°μ Έλ€ μ€λ€.
const store = createStore({
state(){
return {
// state μμ±
}
},
mutations: {
// state λ³κ²½ ν¨μ μμ±
},
actions: {
// μκ°μ΄ μ€λ 걸리λ ν¨μ μμ±
getData(context){
axios.get('').then(()=>{
// GET μμ² μ±κ³΅ν κ²½μ° μ€νν μ½λ
context.commit('mutations_νλͺ©_λ΄μ_ν¨μλͺ
', μ μ‘ν _λ°μ΄ν°)
}).catch(()=>{
// GET μμ² μ€ν¨ν κ²½μ° μ€νν μ½λ
})
}
},
})
- λ§μ½μ actions λ΄μ ν¨μμμ state λ³κ²½λ κ°μ΄ νκ³ μΆλ€λ©΄ μμ κ°μ ννλ‘ μ½λλ₯Ό μμ±ν΄μΌ νλ€.
- μλνλ©΄ state λ₯Ό λ³κ²½ν λμλ 무쑰건 mutations λ΄μ ν¨μλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ΄λ€.
- λν mutations λ΄μ ν¨μλ₯Ό μ¬μ©ν λμλ commit() μ μ¬μ©νλ©°, μ΄λ₯Ό μ¬μ©νκΈ° μν΄ ν¨μμ νλΌλ―Έν°λ₯Ό νλ μΆκ°ν΄μ νλΌλ―Έν°λͺ
.commit() κ³Ό κ°μ΄ μ¬μ©νλ€.
(λ³΄ν΅ μ΄λμ κ΄μ΅μ μΌλ‘ context λΌλ νλΌλ―Έν°λ₯Ό μ¬μ©νλ€.) - commit() μμλ mutations νλͺ© λ΄μ ν¨μλͺ μ μ μ΄μ£Όκ³ , λ§μ½ μ μ‘νκ³ μΆμ λ°μ΄ν°κ° μμΌλ©΄ commit() μμ λλ²μ§Έ νλΌλ―Έν°λ‘ μ μ‘ν λ°μ΄ν°λ₯Ό λ£μ΄μ£Όλ©΄ λλ€.
728x90
λ°μν
'[κ°λ°] Practice > Vue.js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Vue.js] Composition API μ¬μ©ν΄λ³΄κΈ° (0) | 2022.04.09 |
---|---|
[Vue.js] Vuex4: mapState μ¬μ©νκΈ° (0) | 2022.04.08 |
[Vue.js] Vuex2: μ’μμ & μ’μμ μ·¨μ & μ’μμ μ¬λΆ νμ κΈ°λ₯ λ§λ€κΈ° (0) | 2022.04.08 |
[Vue.js] Vuex1: Vuex μ ν νκΈ° (0) | 2022.04.07 |
[Vue.js] mitt μ μ¬μ©νμ¬ λ©λ¦¬ λ¨μ΄μ§ Component κ° λ°μ΄ν° μ μ‘νκΈ° (0) | 2022.04.07 |