코드/JS

[Vue3] reactive fundamental

Yeah-Panda 2024. 8. 8. 22:06

vue3 에는 ref 라는 함수를 제공하며 반응형 객체를 반환한다.

reactive 라는 함수가 있다.

마찬가지로 반응형 객체를 반환하지만 ref와는 다른 점이 존재한다.

매개변수로 primitive 객체가 아닌 Object 혹은 Array 객체를 받는다

<script setup>
const state = reactive({count: 0});
const count = ref(0);
const increaseCount = () => {
  state.count++;
}
const increaseCountRef = () => {
  count.value++; 
}
</script>

<template>
<p>Reqctive Count = {{ state.count }}</p>
<button @click="increaseCountRef">Increase Count</button>
<hr />
<p>Ref Count = {{ count }}</p>
<button @click="increaseCount">Increase Count</button>

</template>

 

ref 함수로 생성된 반응형 객체와의 차이점은 script 영역내에서 직접 속성 접근이 가능하다는 점.

ref 함수로 생성된 객체는 counrt.value , 즉 .value 를 통해 접근해야하나 reactive 를 통해 생성된 객체는 해당 속성을 바로 접근할수 있다.

 

reactive 와 ref 의 가장 큰 차이

첫 번째, reacitve 는 primitive 데이터를 매개변수로 사용할수 없다.

export declare function reactive<T extends object>(target: T): UnwrapNestedRefs<T>;

primitive 데이터는 ref 를 이용해서 반응형 객체로 선언한다.

 

두 번째 다른 객체로 변경 불가하다

let state = reactive({count: 0});
const increase = () => {
  state = {
    count: state.count++
  };
}

 

위 코드처럼 state.count 를 직접 변경하지 않고 다른 객체로 참조하게 할 경우 반응형 객체가 되지 않는다.(당연하겠지만)

 

'코드 > JS' 카테고리의 다른 글

[TS] keyof, unionType  (1) 2024.08.28
[JS] 자바스크립트 주석  (0) 2023.04.19
[CJS] module.exports, exports  (0) 2022.12.23
[NPX] 실행 옵션  (0) 2022.12.13
[JS] URL 파싱  (0) 2020.12.22