Computed vs Watch vs Methods
Computed vs Watch vs Methods 언제 어떻게 사용할까?
Computed vs Watch vs Methods 언제쓸까?
Computed는
데이터다
간단한 연산일 때
data의 데이터들과 의존성computed속성은 의존(종속) 대상을 따라 **저장(캐싱)**된다의존되어(종속) 있는 데이터가 변했을 경우에만 재 렌더링 한다.
데이터가 변경되지 않는 한,
computed속성 함수들은 계산을 다시 하지 않고 계산되어 있던 결과를 반환return되는 값으로 셋팅됨.페이지가 처음 렌더링될 때 데이터를 업데이트 하려고 한다면 사용
// Vue.js 공식 홈페이지에 나와있는 예제
<template>
<div>
<p>원본 메시지: "{{ message }}"</p>
<p>역순으로 표시한 메시지: "{{ reversedMessage }}"</p>
</div>
</template>
<script>
export default {
data(){
return {
message: '안녕하세요'
}
},
computed: {
// 계산된 getter
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
}
}
</script>computed 프로퍼티를 보면 reverseMessage 라는 프로퍼티에 값으로 익명함수가 할당되어있다.
computed에 정의하는 이 익명함수는 반드시 값을 리턴하도록 작성되야한다.
Watch는
콜백함수
인자를 받거나 특정 액션이 필요한 경우
감시할 데이터가(특정 프로퍼티) 변경되면 함수가 실행됨
계속해서 데이터가 빈번하게 바뀔때
watch는 아무 프로퍼티도 생성하지 않고 익명함수는 단순히 콜백함수로의 역할을 한다.watch에 명시된 프로퍼티는 감시할 대상을 의미할 뿐이다.
methods는
업데이트 라이프 사이클이 동작한(=아무 변수나) 변수 변경이 있을때 마다 무조건 항상 함수를 실행
인자를 받고 액션이 필요한 경우, 혹은 인자를 받고 그 값을 이용해서 다른값을 내야할때
캐싱이 필요한 이유
코드를 작성하다보면 자주 바뀌지는 않지만 중요한 계산이 필요할 때가 있다. 그때 methods를 사용하면 렌더링 될때마다 계산을 진행해야한다. 따라서 이 경우에는 computed 를 사용해 변경시에만 호출하도록 하는 것이 좋다.
computed와 methods와의 차이점
computed는
template에서 호출시 ()를 적지 않아야 된다.computed는
return값이 반드시 존재해야한다.computed는 파라미터를 받을 수 없다.
참고
Last updated