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

jj4783님의 프로필 이미지
jj4783

작성한 질문수

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

Alert Store 만들기

반응형의 사용에 관한 질문입니다(ref, reactive)

작성

·

641

·

수정됨

0

안녕하세요, 강의를 듣고 사이드 프로젝트를 하면서 의문이 생기어 질문남깁니다.

제가 이제까지는 .vue 파일내부의 script 내부에서, 모든 변수를 반응형화 하였는데요, 이게 의미가 있는지에 대해 의문이 생기어 질문드립니다.

예를 들어, 인풋에서 값을 받아 검색을 하는 상황에서, searchBookQuery라는 변수를 선언하여 반응형화 하였는데요, 그렇지 않고 그냥 let으로 선언해서 사용을해도 상관이 없으려나요?

 

모든 변수가 반응형객체로 생성된다는게 살짝 성능상에서도 좋지않을까 하는 고민이들어 질문 드립니다.

코드예시

// bookSearchResults는 렌더링 되는 부분과 연관이 있기에
// 반응형으로 생성해야한다라는 확신이 들지만
// 다른 변수는 어떨지 선생님의 의견이 궁금합니다
const bookSearchResults = ref([]);

const searchBookQuery = ref("");
const queryTimeout = ref(0);

const searchBook = (e: Event) => {
  searchBookQuery.value = (e.target as HTMLInputElement).value;
  queryTimeout = setTimeout(async () => {
    if (searchBookQuery.value !== "") {
      const result = await axios.get(...);
      bookSearchResults.value = result.data.item;
    } else {
      bookSearchResults.value = null;
    }
  }, 500);
};

// --------위: 반응형선언, 아래: 일반 변수선언------------

let searchBookQuery = null;
let queryTimeout = 0;

const searchBook = (e: Event) => {
  searchBookQuery = (e.target as HTMLInputElement).value;
  queryTimeout = setTimeout(async () => {
    if (searchBookQuery !== "") {
      const result = await axios.get(...);
      bookSearchResults.value = result.data.item;
    } else {
      bookSearchResults.value = null;
    }
  }, 500);
};

답변 1

0

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

안녕하세요 :)

맞아요~! 굳이 반응하지 않는 변수들은 let, const로 사용하시면 됩니다.
(참고로 저는 값의 변경이 없는 변수(상수)는 대부분 const로 정의합니다. let은 잘 사용 안하는 것 같아요 🙂)

jj4783님의 프로필 이미지
jj4783
질문자

'반응형'을 쓰는 요소들은 사용자와 상호작용하거나, 렌더링되는 데이터 값들 정도로 보면 맞는거겟죠??

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

대댓글을 지금 봤네요ㅜ
개발자 스타일 마다 달라 정의를 딱 내리기 힘들지만 저의 경우에는

상수의 경우 const로 선언하고 그 외에는 반응형(Reactivity API)으로 선언합니다~!

jj4783님의 프로필 이미지
jj4783

작성한 질문수

질문하기