| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- Server
- 행렬
- Vue
- reactivity
- go
- goroutine
- Vue.js
- URL
- cli
- method
- emit
- todo-list
- CDN
- toggle
- golang
- Refactoring
- component
- goroutines
- channel
- container
- graceful shutdown
- TODO
- Dictionary
- App.vue
- SFC
- localStorage
- websocket
- map
- Matrix
- PROPS
Archives
- Today
- Total
ksundev 님의 블로그
Vue의 반응성(Reactivity) 시스템 이해하기 본문
1. 반응성 시스템이란?
Vue의 핵심 기능 중 하나인 반응성 시스템은 데이터의 변화를 감지하고, 그에 따라 화면을 자동으로 업데이트하는 메커니즘입니다.
2. 기본 구현 예제
HTML 구조
<div id="app">
<!-- 이곳에 무언가 렌더링 된다. -->
</div>
JavaScript 구현
// 1. 반응형 데이터 정의
var data = {
message: 10
}
// 2. 렌더링 함수
function render(sth) {
var div = document.querySelector('#app');
div.innerHTML = sth;
}
// 3. Proxy를 사용한 반응성 구현
var app = new Proxy(data, {
get() {
console.log('값 접근')
},
set(target, prop, newValue) {
console.log('값 갱신')
target[prop] = newValue;
render(newValue);
}
})
3. 핵심 개념 설명
Proxy 객체
- JavaScript의
Proxy객체는 객체의 기본 동작을 가로채서 새로운 동작을 정의할 수 있게 해줍니다. - Vue 3는 내부적으로
Proxy를 사용하여 반응성 시스템을 구현합니다.
핸들러 함수
get 핸들러
- 데이터에 접근할 때 호출됩니다.
- 의존성 추적에 사용됩니다.
set 핸들러
- 데이터가 변경될 때 호출됩니다.
- 변경된 값을 화면에 반영합니다.
4. 작동 방식
app.message에 접근하면get핸들러가 호출되어 "값 접근" 로그가 출력됩니다.app.message = 20과 같이 값을 변경하면:set핸들러가 호출됩니다.- "값 갱신" 로그가 출력됩니다.
- 새로운 값이 화면에 렌더링됩니다.
5. Vue의 실제 반응성 시스템
- Vue는 이 예제보다 더 복잡한 반응성 시스템을 사용합니다.
- 주요 특징:
- 의존성 추적
- 중첩된 객체 처리
- 배열 변경 감지
- 성능 최적화
6. 학습 포인트
- 반응성의 기본 원리 이해
Proxy객체의 활용- 데이터 변경과 화면 업데이트의 연결
- Vue의 내부 동작 방식 이해
7. 테스트 방법
콘솔에서 테스트
브라우저의 개발자 도구 콘솔에서 다음 명령어들을 순서대로 실행해보세요:
// 1. 현재 값 확인
console.log(app.message) // "값 접근" 로그와 함께 10 출력
// 2. 값 변경 테스트
app.message = 20 // "값 갱신" 로그와 함께 화면이 20으로 업데이트
// 3. 다른 값으로 변경
app.message = "안녕하세요" // "값 갱신" 로그와 함께 화면이 "안녕하세요"로 업데이트
이 예제는 Vue의 반응성 시스템의 기본 원리를 이해하는 데 도움이 됩니다. 실제 Vue는 더 복잡한 구현을 사용하지만, 이 기본 개념을 이해하면 Vue의 동작 방식을 더 잘 이해할 수 있습니다.
'[개발] Vue.js > 기본' 카테고리의 다른 글
| Vue의 Component 통신 방식 - 1. Props (0) | 2025.06.18 |
|---|---|
| Vue의 Component 등록과 사용 (0) | 2025.06.18 |
| v-for 디렉티브 사용하기 (1) | 2025.06.18 |
| Vue의 메서드(method) 사용하기 (1) | 2025.06.16 |
| 첫 Vue 앱 만들기 (hello world) (0) | 2025.06.16 |