본문 바로가기

vue

ref & reactive

728x90
반응형

Vue에서 **reactive**와 **ref**는 반응성 상태를 관리하는 두 가지 방법입니다. 둘 다 Vue의 반응성 시스템을 사용하여 상태를 추적하고 변경 시 자동으로 UI를 업데이트하지만, 사용하는 방식과 적용 대상에 차이가 있습니다.

 

1. ref(): 기본 데이터 타입과 함께 사용

ref는 단일 값(예: 문자열, 숫자, 불리언 등)을 반응성으로 만들 때 사용됩니다. ref는 Vue에서 원시 값(primitive value)들을 반응형 데이터로 만들기 위해 사용됩니다.

  • ref는 원시 값(primitive value)을 반응성 상태로 만들어 줍니다.
  • ref로 선언된 값은 객체의 형태로 감싸지기 때문에 .value 프로퍼티를 통해 접근해야 합니다.
  • 객체가 아닌 기본 데이터 타입에 사용할 때 주로 사용됩니다
import { ref } from 'vue';

const count = ref(0);  // count는 이제 반응형 상태입니다.
const name = ref('John Doe');

// .value로 접근
console.log(count.value);  // 0
count.value = 5;
console.log(count.value);  // 5

위 코드에서 count와 name은 ref()로 선언되어 **.value**를 통해 값을 읽고 쓸 수 있습니다.

 

2. reactive(): 객체나 배열에 사용

reactive는 객체배열처럼 복잡한 데이터 구조에 반응성을 부여할 때 사용됩니다. reactive는 객체나 배열을 반응성으로 만들어, 그 객체의 속성이나 배열의 값을 자동으로 추적하고 반영합니다.

  • reactive는 객체나 배열에 반응성을 적용하는 데 사용됩니다.
  • 객체나 배열의 값을 직접 수정하고 추적할 때 유용합니다.
  • reactive로 선언된 데이터는 .value 없이 직접 속성에 접근할 수 있습니다.
import { reactive } from 'vue';

const person = reactive({
  name: 'John Doe',
  age: 30
});

console.log(person.name);  // 'John Doe'
person.name = 'Jane Doe';
console.log(person.name);  // 'Jane Doe'

 

 

여기서 person 객체는 reactive로 선언되어 **person.name**처럼 속성에 직접 접근하고 값을 변경할 수 있습니다. reactive는 객체나 배열의 속성 값이 변할 때 반응성을 제공합니다.

 

차이점 요약

특징

ref vs reactive

주요 용도 원시 데이터(숫자, 문자열, 불리언 등) 객체나 배열과 같은 복잡한 데이터 구조
값에 접근하는 방식 .value를 통해 접근 속성에 직접 접근
반응성 적용 대상 단일 값 객체배열
예시 const count = ref(0); const person = reactive({ name: 'John' });

3. ref vs reactive 사용하기 적절한 경우

  • **ref**는 단일 값(예: 숫자, 문자열 등)을 반응형으로 만들 때 사용합니다.
    • 예: 카운트, 플래그 값, 텍스트 데이터
  • **reactive**는 객체배열을 반응형으로 만들 때 사용합니다.
    • 예: 사용자 객체, 리스트, 상태 관리 객체
728x90
반응형

'vue' 카테고리의 다른 글

vue repository 초기화  (0) 2025.03.10
port  (0) 2024.12.30
error 상황  (0) 2024.12.06
vue project 생성  (0) 2024.11.22