π λ€μ΄κ°λ©°
μ΄λ² ν¬μ€ν
μμλ Vue.js
μ λ°μν μμ€ν
μ λν΄ μμλ³΄κ³ μ ν©λλ€.
μ΅κ·Ό μ§ννκ³ μλ μ¬μ΄λ νλ‘μ νΈμμ μ»΄ν¬λνΈμ data
μ λ³κ²½μ ν΄μ€λ
props
λ‘ μμμκ² μ λ¬ν΄μ€ κ°μ΄ κ°±μ λμ§ μλ λ¬Έμ κ° λ°μνμ΅λλ€.
νΉμλ ν΄μ μ°Ύμ보λ μ΄λ reactivity
λ₯Ό κ³ λ €νμ§ μμ λ°μν λ¬Έμ μμ΅λλ€.
π λ°μνμ΄λ?
Vue.js
μμλ μ΄λ»κ² μ»΄ν¬λνΈ μΈμ€ν΄μ€μ data
μμ± κ°μ μΆμ νμ¬ νλ©΄μ λλλ§μ ν΄μ€ μ μλ κ²μΌκΉμ?
μ΄λ λ°λ‘ κ° μ»΄ν¬λνΈ μΈμ€ν΄μ€λ§λ€ ν λΉλ watcher
λ₯Ό ν΅ν΄ λ³κ²½ μ¬νμ μΆμ λ° κ΄λ¦¬νκΈ° λλ¬Έμ κ°λ₯ν μΌμ
λλ€.
Vue.js
λ μΈμ€ν΄μ€ μ΄κΈ°ν λ¨κ³μμ data
μ λͺ¨λ μμ±μ
getter / setter
λ₯Ό μΆκ°νμ¬ κ΄λ¦¬ λ° κ°±μ μ νμν μ°μ°μ μνν©λλ€.
λ νκ°μ§ μ€μν μ¬μ€μ Vue.js
λ DOM
μ
λ°μ΄νΈλ₯Ό λΉλκΈ°
λ‘ μννλ€λ κ²μ
λλ€.
λ°μ΄ν° λ³κ²½μ΄ λ°μνμ¬ DOM
μ μ
λ°μ΄νΈ ν΄μΌν κ²½μ° νλ₯Ό μ΄κ³ λͺ¨λ λ°μ΄ν° λ³κ²½μ λ²νΌμ κΈ°λ‘ν©λλ€.
μ΄ν ν΄λΉ λ³κ²½ μ¬νλ€μ μ΄λ²€νΈ 루ν tick
μμ λκΈ°μ΄μ λΉμ°κ³ μ€μ λ³κ²½ μμ
μ μνν©λλ€.
π 리μ€νΈ λ λλ§ μ μ£Όμμ¬ν
Vue.js
λ λ°°μ΄μ μΈλ±μ€λ‘ νλͺ©μ μ§μ μ€μ νλ κ²½μ°λ λ°°μ΄ κΈΈμ΄λ₯Ό μμ νλ κ²½μ°μλ
λ³κ²½ μ¬νμ μΆμ ν μ μμ΅λλ€.
κ·Έλ μ§λ§ κ·Έ μΈ μλμ λ³μ΄ λ©μλκ°μ κ²½μ°λ λνλμ΄μμ΄ μν λ³ν μ 무λ₯Ό μΆμ ν μ μμ΅λλ€.
- push(), pop()
- shift(), unshift()
- splice()
- sort()
- reverse()
π μ΄λ²μ λ°μν λ¬Έμ μ μμΈμ 무μμ΄μμκΉ?
1οΈβ£ 리μ€νΈ λ λλ§ μ΄μ
export default {
data() {
return {
current: 0, // νμ¬ λ°°μ΄ μΈλ±μ€
answer: [], // μ¬μ©μ μ
λ ₯ κ°λ€μ μ μ₯νλ λ°°μ΄
userInput: "", // μ¬μ©μ μ
λ ₯ κ°
};
},
methods: {
handleNext() {
// currnt(μΈλ±μ€) μ¦κ°, answer κ° μΆκ°λ μ΄ν μ€νλ¨
},
saveData(data) {
this.answer[this.current] = data;
this.handleNext();
},
},
};
κ·Έλ λ€λ©΄ κΈ°μ‘΄ μ½λλ₯Ό μ΄ν΄λ³΄λ©° 무μμ΄ λ¬Έμ μλμ§ νμ
ν΄λ³΄κ² μ΅λλ€.
κΈ°μ‘΄μλ μ¬μ©μκ° μ
λ ₯ν λ¨μ΄λ€μ μ μ₯νλ λ°°μ΄ answer
κ° μμ κ°μ΄ data
μ μ μΈλμ΄ μμ΅λλ€.
λν μ¬μ©μκ° λ¨μ΄λ₯Ό μ
λ ₯ν κ²½μ° λ°μνλ μ΄λ²€νΈ νΈλ€λ¬μΈ saveData
ν¨μμ κ²½μ°
νμ¬ λ°°μ΄μ μΈλ±μ€κ°μ μλ κ°μ μλ‘μ΄ κ°μΌλ‘ λ체νλ μμ μ νκ³ μμ£ .
κ·Έλ°λ° μμμ μ΄ν΄λ΄€λ―μ΄ Vue.js
λ μΈλ±μ€λ‘ μ§μ μ μΈ μ κ·Όμ ν΅ν΄ κ°μ λ³κ²½ν κ²½μ°
μ΄ λ³κ²½μ¬νμ μΆμ ν μ μκΈ° λλ¬Έμ λ€μ λλλ§μ΄ λ°μνμ§ μμ΅λλ€.
λ°λΌμ μλμ κ°μ΄ Vue
μμ μ 곡νλ set
λ©μλλ splice
λ₯Ό νμ©νμ¬ κ°μ λ³κ²½ν΄μ€λλ€.
saveData(data) {
this.$set(this.answer, this.current, data);
this.handleNext();
}
2οΈβ£ λΉλκΈ° μ λ°μ΄νΈ μ΄μ
μμ§ ν κ°μ§ λ¬Έμ μ μ΄ λ¨μμμ΅λλ€.
μ μ½λλ₯Ό 보μλ©΄ λ°μ΄ν°λ₯Ό κ°±μ νκ³ μΈλ±μ€λ₯Ό μ¦κ°μν€λ handleNext
ν¨μλ₯Ό μννλ κ²μ μ μ μμ΅λλ€.
νμ§λ§ κ·Έλλ‘ μ€νμν¬ κ²½μ° λ€μκ³Ό κ°μ΄ λ¨μ΄κ° μλ €μ μ
λ ₯λλ λ¬Έμ κ° λ°μνλ κ²μ νμΈν μ μμ΅λλ€.
Vue.js
μμ DOM
μ΄ λΉλκΈ°λ‘ μ
λ°μ΄νΈ
μ²λ¦¬λ₯Ό νλ κ²μ΄ μμΈμ΄μμ΅λλ€.
νλ©΄μ μ
λ°μ΄νΈκ° λκΈ°λ μ μ μΈλ±μ€κ° μ¦κ°νμ¬ (handleNext)
λ°μν νμμ΄μμ΅λλ€.
λ°λΌμ λ€μκ³Ό κ°μ΄ λ°μ΄ν° λ³κ²½μ λ§μΉ ν DOM
μ
λ°μ΄νΈλ₯Ό λ§μΉ λκΉμ§ κΈ°λ€λ¦¬κΈ° μν΄
Vue.nextTick(μ½λ°±)
μ μ¬μ©νλλ‘ λ³κ²½ν΄μ€¬μ΅λλ€.
saveData(data) {
this.$set(this.answer, this.current, data);
this.$nextTick(() => {
this.handleNext();
})
}
π μ°Έκ³ μλ£
'π archive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Vue.js] Vue μμ λΉλκΈ° μμ²μ μΈμ νλ κ²μ΄ μ’μκΉ? (0) | 2022.02.20 |
---|---|
Vue.js ν΄λμ€μ μ€νμΌ λ°μΈλ© μ μ©νκΈ° (1) | 2021.03.02 |
Vue-router λ€λΉκ²μ΄μ κ°λ νμ©νκΈ° (0) | 2021.03.01 |
Vue.jsμ Vuetify νμ©ν΄μ axiosλ‘ νμΌ μ λ‘λνκΈ° (0) | 2021.03.01 |
Vue.js μ€μ²© λΌμ°ν° (Nested Router) μ¬μ©νκΈ° (0) | 2021.03.01 |
π¬ λκΈ