본문 바로가기
Javascript/Vue 지식

[Vue] 뷰 인스턴스 (Vue Instance)

by isfp_yykkng 2024. 8. 9.

[Vue] 뷰 인스턴스 (Vue Instance)

뷰 인스턴스 생성하기

모든 Vue 앱은 Vue 함수를 새 뷰 인스턴스(Vue Instance)를 만드는 것부터 시작한다.

var vm = new Vue({
  // 옵션
})

 

위 코드처럼 Vue 인스턴스를 참조하는 변수를 종종 vm (ViewModel 의 약자) 을 사용한다.

 

데이터 (data)

이렇게 뷰 인스턴스가 생성될 때 data 객체에 있는 모든 속성이 Vue의 반응형 시스템에 추가된다. 즉, 각 속성값이 변경될 때 뷰가 " 반응 "하여 새로운 값과 일치하도록 업데이트된다. 아래 코드와 같이 데이터가 변경되면 화면은 다시 렌더링 되는 것이다.

// 데이터 객체
var data = { a: 1 }

// Vue인스턴스에 데이터 객체를 추가합니다.
var vm = new Vue({
  data: data
})

// 인스턴스에 있는 속성은
// 원본 데이터에 있는 값을 반환합니다.
vm.a === data.a // => true

// 인스턴스에 있는 속성값을 변경하면
// 원본 데이터에도 영향을 미칩니다.
vm.a = 2
data.a // => 2

// ... 반대로 마찬가지입니다.
data.a = 3
vm.a // => 3

하지만 주의할 점은 data 에 있는 속성들은 인스턴스가 생성될 때 존재한 것들만 반응형 이라는 것이다.

 

vm.b = "hi" 와 같이 인스턴스가 생성될 때 없는 것들은 변경되어도 화면에 갱신되지 않는다. 따라서 어떤 속성이 나중에 필요하다는 것을 알고 있으며, 빈 값이거나 존재하지 않은 상태로 시작한다면 초기값을 지정할 필요가 있습니다.

 

여기서 유일한 예외가 Object.freeze() 를 사용하는 경우이다. 이는 기존 속성이 변경되는 것을 막아 반응성 시스템이 추적할 수 없다는 것을 의미한다.

 

메소드 (method)

Vue 인스턴스는 데이터 속성 이외에도 유용한 인스턴스 속성 및 메소드를 제공합니다. 메소드에서 data 에 있는 속성들을 사용하려면 속성 앞에 this 키워드를 사용하여 접근하여야 한다.

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})

vm.$data === data // => true
vm.$el === document.getElementById('example') // => true

// $watch 는 인스턴스 메소드 입니다.
vm.$watch('a', function (newVal, oldVal) {
  // `vm.a`가 변경되면 호출 됩니다.
})

'Javascript > Vue 지식' 카테고리의 다른 글

[Vue] Vue 기본  (0) 2024.08.07