v-model, computed, watch
[v-model]
- 입력창 이벤트 예시
<template>
<input type="text" @keyup="textModifer" />
{{ word }}
</template>
<script>
export default {
name: "App",
data() {
return {
word: "",
};
},
methods: {
textModifer(e) {
this.word = e.target.value;
},
},
};
</script>
v-on의 단축키 중 @keyup 사용
textmodifer에서 e를 파라미터로 전달해주고 word에는 해당 입력의 value값을 지정
<template>
<input type="text" v-model="word" />
<P>입력되는 값: {{ word }}</p>
</template>
<script>
export default {
name: "App",
data() {
return {
word: "",
};
}
};
</script>
v-model 양방향 바인딩 (Data Two Way Binding)
v-model="내가 원하는 Data값"
input value를 write값으로 바인딩 한다.
textModfier 메소드를 이용해서 write값을 변경해주어 하나의 키워드로 해결할 수 있다.
<template>
<input type="text" :value="write" @input="write = $event.target.value" />
<p>{{ write }}</p>
</template>
<script>
export default {
name: "App",
data() {
return {
write: "ttt",
};
},
};
</script>
@input 실시간 입력 값 데이터 공유
즉각적으로 표현되지 못하는 한글
영어와 달리 한국어는 조합이 필요하기에 input입력값에 즉각적이 표현이 안된다.
이럴때는 v-model이 아닌 기존에 value를 data값에 바인딩 해야한다.
[computed]
computed와 methods 속성의 차이점은 무엇일까?
- methods: 렌더링이 일어날 때마다 항상 함수를 실행한다.
- computed: 계산해야하는 목표 데이터를 정의하는 '선언형'프로그래밍 방식이다. 저장된 결과를 반환하므로 종속 대상의 변경이 일어나기 전까지는 호출되지 않는다.
computed는 계산된의 의미이다.
가장 큰 특징은 종속된 값(data속성에 정의한 반응형 데이터를 말함)에 의존한다.
의 경우는 DOM이 생성되기 전에 computed객체 내부에 있는 값들을 계산하여 캐싱 => 내부 data 값이 변경되면 다시 계산한다. 미리 계산 => 캐싱 => 추적하므로 속도측면에서 유리하다.
[methods]
일반적으로 함수를 정의할때 사용하고 computed와 호출되는 조건이 다르다.
computed는 종속된 값에 의존하는 반면 methods는 렌더링이 일어날 때마다 호출된다.
- 그렇다면 언제 사용하는 것일까?
만일 method에 여러개의 함수가 여러개라 생각해보자.
data 변경으로 화면이 렌더링이 되는 상태일 때 해당 template안에서는
계속해서 methods안에 있는 여러개의 함수가 작동이 될 것이다.
만일 api호출같은 무거운 로직이 있을 경우등을 생각하면 성능 저하의 원인이 될 것이다.
종속된 값이 변화하는 시점을 잘 파악해서 computed를 이용해보면 어떨까!
[Watch]
computed는 '선언형 프로그래밍 방식'
watch는 '표현형 프로그래밍 방식'
선언형 프로그래밍: 목표하는 데이터를 지정해 놓고 그것을 이루는 데이터(변수)가 바뀌면 자동으로 추적해준다.
표현형 프로그래밍: 추척할 데이터(변수) 를 하나씩 지정해준다. (코드가 길어질 수 있음)
watch는 지정한 변수값의 변화를 감시하여 부가적인 작업을 할 수 있도록 해준다.
값이 변경되기 이전 값을 참조할 수 있다는 장점을 갖고 있다.
컴포넌트 생성 후 변수가 할당되기 전에 기본적으로 모든 변수는 null값을 취하고 있다.
이 후에 변수의 초기값이 지정되는 과정을 watch는 데이터의 변경이라 판단하지 않는다.
ex) 같은 컴포넌트를 다시 불러올 때 props의 처음 값이 매우 중요하는 상황등
'Framework > vue_Architecture' 카테고리의 다른 글
Composition API: ref() vs reactive() (0) | 2023.01.02 |
---|---|
Vue Router(1) (0) | 2023.01.02 |
composition API(1)_반응성(vue3.js) (1) | 2022.12.30 |
fetching data (vue.js) (0) | 2022.12.26 |
부모, 자식간 데이터 전송 (vue.js) (0) | 2022.12.25 |
댓글