inflearn logo
강의

Course

Instructor

Getting Started with Vue.js - Age of Vue.js

watch property vs computed property

data, computed, watch > Reactivity

51

kmh880507

5 asked

0

안녕하세요. 수강 중 궁금한점이 있어 글 남기게 되었습니다. vue 인스턴스의 data, computed, watch 속성으로 인하여 속성 값이 변경되면 vue의 Reactivity 시스템에 의해 화면이 업데이트 된다라고 이해했는데 맞을까요~?

React의 useState, useReducer를 통해 상태를 관리하고 화면이 업데이트되는 것과 동일한지도 궁금합니다~

javascript vue.js

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. kmh880507님.

질문하신 Vue.js의 Reactivity 시스템과 React의 상태 관리 시스템에 대해 설명드리겠습니다.

Vue.js의 Reactivity 시스템

Vue.js에서는 데이터 바인딩과 반응성을 지원하여, data, computed, watch 속성을 활용해 데이터가 변경될 때 자동으로 화면을 업데이트합니다. Vue.js의 Reactivity는 주로 Object.defineProperty를 사용하여 getter/setter를 만들어 데이터 변화를 추적합니다. 이로 인해 데이터가 변경될 때마다 해당 변경 사항이 자동적으로 DOM에 반영됩니다.

  • data: Vue 인스턴스의 상태를 저장하고, 변경이 일어나면 자동으로 화면 갱신이 이루어집니다.
  • computed: 종속된 데이터가 변할 때만 값이 재계산되며, 계산된 값은 캐싱됩니다.
  • watch: 특정 데이터의 변화를 감지하여 필요할 때 추가적인 작업을 수행할 수 있도록 합니다.

React의 상태 관리 시스템

React에서는 useState, useReducer 훅을 통해 컴포넌트 상태를 관리합니다. 상태가 변경되면 React는 새로운 상태값을 기반으로 해당 컴포넌트와 관련한 가상 돔을 다시 렌더링하여 UI를 업데이트합니다.

  • useState: 상태 변수와 이를 갱신할 수 있는 함수를 제공하며, 호출 시 항상 새로운 값을 반환하고 UI를 다시 렌더링합니다.
  • useReducer: 복잡한 상태 로직을 관리하거나 상태 변경을 추적할 때 유용하며, 리듀서 함수를 통해 상태와 액션을 다룹니다.

결론

두 라이브러리 모두 사용자 인터페이스(UI)를 상태와 동기화시키기 위해 Reactivity 개념을 사용하지만, 내부 구현 방식은 다르며 Vue.js는 데이터 반응성을 위해 주로 Object.defineProperty를 사용하고, React는 상태 변화에 따른 재렌더링을 기반으로 합니다.

관련 질문을 더 깊이 탐구하고 싶으시다면, 아래 유사 질문도 참고하실 수 있습니다:
- Vue.js에서의 Reactivity와 Object.defineProperty의 역할
- Object.defineProperty()에 대한 질문입니다…

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

개발자 툴에서 Vue가 표시되지 않는 현상.

0

93

2

chrome 확장 devtools 버전 문제

0

81

1

Vue.js not detected가 자꾸 뜹니다

0

83

2

마지막 강의가 안되요

0

57

1

f12누르고 개발자도구에 vue 탭이 안생겨요

0

89

1

vue composition api

0

73

1

강의 자료 다운이 될까요?

0

128

1

개발자 도구에서 뷰탭이 안보여요....

0

585

3

프롭스 데이터 질문입니다.

0

113

1

component.html:11 Uncaught ReferenceError: Vue is not defined at component.html:11:20 (anonymous) @ component.html:11

0

140

1

화면이 안떠요,, 이전 이후 강의는 뜨는데..

0

236

6

크롬 확장 프로그램 vue devtools 설치했는데

0

532

2

코드를 수정하고 브라우저의 Vue로 넘어가면 다운이 됩니다.

0

243

1

버튼을 클릭해도 event가 발생하지 않습니다.

0

310

1

vue3 css 경로 표시 문의

1

231

2

개발자도구 vue탭

0

355

1

화면 코드 보기

1

226

2

App.vue 내용 변경했는데 창이 연결할수없대요ㅜㅜ

1

384

2

html/css/js로 작성된 코드를 vue.js로 일부 전환하고자 이 강의를 듣기 시작했습니다.

1

886

2

Vue 개발자 도구에서 다른 기능들이 안보여요!

1

598

2

{{ num }} 이 <app-content> 아래에 들어가 있을때에는 노출이 안됩니다...

1

288

2

뷰 개발자도구 이벤트 타임라인 어느 부분에서 확인가능한건가요

1

401

2

다음 단계 강의는...?

1

387

2

버튼을 눌러도 data의 값이 변경되지 않습니다

1

277

2