Vue 3 Composition API : Reactive Object

2023. 8. 9. 11:01·📘 Frontend/Vue

Reactive Object

위의 코드처럼 상수로 어떠한 값들을 선언해 보았습니다.

이번엔 반응형 객체를 만들어서 출력해보고 그 내부 동작과정을 학습해 보겠습니다.

<template>  
  <section class="container">  
    <h2>{{ user.name }}</h2>  
    <h3>{{ user.age }}</h3>  
  </section>  
</template>

<script setup>  
import { ref } from 'vue'  

// const name = ref('Maximilian');  
// const age = ref(31);  

const user = ref({  
  name: 'Maximilian',  
  age: 31  
})  

  setTimeout(function() {  
    user.value.name = 'Max'  
    user.value.age = 32  
  }, 2000)  
</script>

위 코드처럼 ref의 값으로 객체를 전달하면 Vue가 객체 내부의 변화를 파악할 수 있도록 객체는 프록시로 래핑 됩니다.

setup 함수가 객체를 반환하고, 내부적으로 미가공된 ref 객체를 받으며 객체 내부 반응성을 인지합니다.

그리고 새 값이 지정되거나 템플릿에서 사용될 때를 알기 때문입니다.

하지만 이렇게 객체를 다룰 경우 객체만을 위해 만들어진 Reactive를 사용하는 것이 더 좋습니다.


Reactive 사용

Reactive는 ref와 비슷하지만, 객체 전용으로 만들어졌습니다.

Ref는 어떤 값이던지 다 받을 수 있었지만 reactive() 함수는 값으로 객체만을 이용합니다.


Reactive는 객체를 프록시로 래핑해서 반응형으로 만들어 객체를 사용할 수 있게 해줍니다.

즉, value 프로퍼티로 객체를 래핑하지 안기 때문에,

user.value.name 부분에서 value를 거치지 않고 user.name으로 사용이 가능하다는 의미입니다.

<template>  
  <section class="container">  
    <h2>{{ user.name }}</h2>  
    <h3>{{ user.age }}</h3>  
  </section>  
</template>  

<script setup>  
import { reactive } from 'vue'  

// const name = ref('Maximilian');  
// const age = ref(31);  

const user = reactive({  
  name: 'Maximilian',  
  age: 31  
})  

  setTimeout(function() {  
    user.name = 'Max'  
    user.age = 32  
  }, 2000)  
</script>

Reactivity - Advanced

isRef() = Ref 값이 반응형인지 확인
isReactive() = 객체가 반응형인지 확인
toRefs() = 파라미터로 들어온 반응형 객체 내부에 중첩된 값을 반응형으로 만듬 (즉, Ref로 변환)

저작자표시 (새창열림)

'📘 Frontend > Vue' 카테고리의 다른 글

Vue 3 Composition API : Script Setup & LifeCycle Hooks  (0) 2023.08.10
Vue 3 Composition API : Methods & Computed & Watcher  (0) 2023.08.10
Vue 3 Composition API : Option API -> Composition API  (0) 2023.08.08
Vue - Router  (0) 2023.08.08
Vue - Native Fetch API를 이용한 HTTP Request 전송 (feat.Firebase)  (0) 2023.08.07
'📘 Frontend/Vue' 카테고리의 다른 글
  • Vue 3 Composition API : Script Setup & LifeCycle Hooks
  • Vue 3 Composition API : Methods & Computed & Watcher
  • Vue 3 Composition API : Option API -> Composition API
  • Vue - Router
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Vue 3 Composition API : Reactive Object
    상단으로

    티스토리툴바