강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

kmh880507님의 프로필 이미지
kmh880507

작성한 질문수

Vue.js 시작하기 - Age of Vue.js

watch 속성 vs computed 속성

data, computed, watch > Reactivity

작성

·

15

0

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

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

답변 1

0

안녕하세요, 인프런 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()에 대한 질문입니다…

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

kmh880507님의 프로필 이미지
kmh880507

작성한 질문수

질문하기