# λ·° λ©μλ
λ·°μ λ©μλλ νΉμ κΈ°λ₯ λ³λ‘ λ¬Άμ μ μλ μλ°μ€ν¬λ¦½νΈ ν¨μλ₯Ό μλ―Έν©λλ€. λ©μλλ νν λ·° ν νλ¦Ώμ λ²νΌ μ΄λ²€νΈ μ²λ¦¬λΆν° HTTP ν΅μ κΉμ§ λ€μν μ±κ²©μ μ½λλ‘ κ΅¬μ±λ©λλ€.
# λ©μλ μ½λ νμ
λ©μλλ₯Ό μ μΈνλ λ°©λ²μ μλμ κ°μ΅λλ€.
new Vue({
methods: {
// ..
}
})
# λ©μλ μμ 1 - κΈ°λ³Έ
λ©μλλ₯Ό μ΄μ©ν΄μ λ²νΌ ν΄λ¦ μ΄λ²€νΈλ₯Ό μ²λ¦¬ν΄λ³΄κ² μ΅λλ€.
<button v-bind:click="clickButton">click me</button>
new Vue({
methods: {
clickButton() {
alert('clicked');
}
}
})
μμ click me λ²νΌμ ν΄λ¦νλ©΄ κ²½κ³ μ°½μ΄ λ¨λ©΄μ clicked λΌλ λ©μμ§κ° νμλ©λλ€.
# λ©μλ μμ 2 - μμ©
λ©μλμ λ΄μ©μλ λ¨μν νλ©΄ μ‘°μμ μν κΈ°λ₯ λΏλ§ μλλΌ νΉμ λ‘μ§μ λ΄μλλ μ₯μλ‘λ νμ©ν μ μμ΅λλ€.
<button v-bind:click="displayProducts">Refresh</button>
μμ²λΌ Refresh λΌλ λ²νΌμ νλ λ§λ€κ³ ν΄λ¦ νμ λ displayProducts()
λ©μλκ° μνλ μ μκ² λλ ν°λΈλ‘ μ°κ²°ν©λλ€.
new Vue({
data: {
products: []
},
methods: {
displayProducts() {
this.fetchData();
// ..
},
fetchData() {
axios.get('/products').then(function(response) {
this.products = response.data;
}).catch(function(error) {
alert(error);
});
}
}
})
Refresh λ²νΌμ ν΄λ¦νκ³ λλ©΄ displayProducts()
λ©μλκ° fetchData()
λ₯Ό νΈμΆν©λλ€. μ΄λ° μμΌλ‘ λ©μλλ₯Ό μ°κ²°ν΄μ μ¬μ©ν μλ μμΌλ©° μ΄λ κ² νλ©΄ νΉμ κΈ°λ₯ λ³λ‘ λ©μλλ₯Ό λΆλ¦¬ν μ μμ΄ μ½λλ₯Ό μ€λ³΅ν΄μ μμ±νμ§ μκ³ μ¬νμ©νκΈ°κ° μμν©λλ€.
β Single File Components Computed β