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

뭉개님의 프로필 이미지
뭉개

작성한 질문수

Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"

toRef & toRefs 기초부터 활용까지 한방에!

toRef 예시와 관련하여

작성

·

398

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 짐코딩님,

제가 어디서부터 어떻게 이해를 잘 못하고 있는건지 모르겠으나,

어느 순간부터 머리가 꼬여 정리가 되지 않아 질문 남깁니다 ㅠㅠ ,,

 

현재 코드를 보면 설명해주신 듯이

 

PostDetailView에서

const idRef = toRef(props, 'id');

const { isOdd } = useNumber(idRef );

를 통해 반응형으로 넘겨주는데요,

 

반응형으로 넘겨주는 이유를 모르겠습니다.

어차피 composable 함수인 number 내에서 unref로 까서 사용하고,

compute로 다시 반응형을 return해준다고 생각되는데요 ,,

 

왜 반응형을 넘겨주지 않으면 정상적으로 동작하지 않는 건가요 ..!?

답변 1

0

짐코딩님의 프로필 이미지
짐코딩
지식공유자

안녕하세요 :)

음... 우선 comuted(콜백함수)는 콜백함수내의 반응형 변수의 값이 변경되면 값을 다시 할당(계산)하는데요!

import { computed, unref } from 'vue';

export const useNumber = number => {
	const isOdd = computed(() => unref(number) % 2 === 1);
	const isEven = computed(() => !isOdd.value);

	return {
		isOdd,
		isEven,
	};
};

강의 예제처럼 number가 만약 20이라면 isOddfalse일거에요. 그런데 만약에 number19로 바뀐다면 isOddtrue가 재할당되어야 하는데 그대로 false일거에요 왜냐하면 number가 반응형 변수가 아니기 때문이죠! ㅎㅎ

그래서 반응형 변수를 넘김으로써 computed 값을 재할당할 수 있게한거에요. 그 수단으로 toRef 함수를 사용한거고요~!

computed에 대해 한 번 고민해보시면 꼬인 부분을 푸실 수 있을 거 같아요~! ㅎㅎ

뭉개님의 프로필 이미지
뭉개
질문자

답변 감사합니다 ! 이상한 곳에 꽂혀있었네요 ㅠㅠ

뭉개님의 프로필 이미지
뭉개

작성한 질문수

질문하기