v-bind와 v-model의 차이점
v-bind는 단방향, v-model은 양방향 바인딩.
양방향이면 그저 좋을 거라 무식한 생각을 했지만, 당연하게도 역할에 맞게 써야 한다.
각각의 기능과 역할을 알아보고 쓰임새에 맞게 쓰도록 하자...
v-bind
v-bind는 데이터를 DOM 요소의 속성에 동적으로 바인딩하는 데 사용된다.
<template>
<input :value="myData">
</template>
export default {
data() {
return {
myData: 'initial value'
};
}
};
:value는 v-bind:value의 단축 표현이다.
:value는 input 요소의 value 속성을 myData에 동적으로 바인딩한다.
그러나 이것은 양방향 바인딩이 아니기 때문에 사용자의 입력은 myData에 반영되지 않는다.
주로 form 요소에 초기값을 설정할 때 사용된다.
v-model
v-model 디렉티브는 주로 사용자 입력과 데이터 모델 간의 양방향 바인딩을 구현하는 데 사용된다.
주로 form 요소에 적용되며 해당 요소의 값을 데이터에 바인딩하고, 데이터의 변경은 사용자 입력에 반영된다.
<template>
<input v-model="myData">
</template>
export default {
data() {
return {
myData: 'initial value'
};
}
};
v-model은 myData와 input 요소를 양방향으로 바인딩하며, myData가 변경되면 입력 필드에 반영되고, 입력 필드의 변경은 myData에 반영된다.
차이점
v-model은 양방향 데이터 바인딩을 수행하며, 입력 요소의 값이 변경되면 데이터가 갱신되고, 데이터가 변경되면 입력 요소에 반영된다.
v-bind는 단방향 데이터 바인딩을 수행하며, 데이터를 DOM 요소에 설정하는 역할을 한다.
사용자의 입력은 바인딩된 데이터에 자동으로 반영되지 않는다.
이를 양방향 바인딩으로 만들려면 @input 이벤트와 메소드를 사용해야 한다.
'🧠 저장 > Vue' 카테고리의 다른 글
Vue3의 반응형 데이터(Reactivity) | 반응형 데이터의 구조분해와 변경방지 (0) | 2024.04.23 |
---|---|
Vue3는 Vue2와 어떤 점이 다를까 | Option API와 Composition API 비교 (0) | 2024.03.27 |
vue2 watch와 computed의 차이점 (0) | 2024.01.24 |
vue2 네비게이션 가드 간단 정리 (0) | 2024.01.21 |
컴포넌트 디자인 패턴 (common, slot, controlled, renderless) 간단 정리 (0) | 2024.01.12 |