인프런 커뮤니티 질문&답변
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()에 대한 질문입니다…
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





