본문 바로가기
_TIL

20240820. TIL

by SILTEA 2024. 8. 20.

 

오늘로써 React과정은 마무리가 되었다
React 스타일링과 전역상태관리 (= Context API, Redux, RTK)
최적화 함수(=useMemo, useCallback)
Lazy & Suspence
번들링 & 코드 스플리팅
Debounce & Throttle
을 배웠었다.

심화과정을 하면서 익혔던 것들을 상기하며
오늘 치른 시험 오답노트를 작성해 보자!

 

 


💡 오답 노트 💡


 

 

 

 

A. CSS-in-JS 방식으로 스타일링 가능

B. 컴포넌트 기반으로 스타일을 캡슐화

C. 스타일 시트의 전역 네임스페이스 오염 방지

D. 브라우저 호환성을 자동으로 보장 ➡️ CSS 작성 시 개발자가 직접 고려해야 할 사항 (정답)

 

 

✔️ 전역 네임스페이스 오염 : 전역 유효 범위를 오염시킨다는 말은 전역 변수와 전역 함수를 전역 객체에 선언하는 행위를 말한다. 전역 유효 범위가 오염되면 변수 이름과 함수 이름이 겹치는 상황이 발생한다.

  1. 라이브러리 파일을 여러 개 읽어 들여 사용할 때
  2. 규모가 큰 프로그램을 만들 때
  3. 여러 사람이 한 프로그램을 만들 때

 

➡️ 전역 유효 범위 안에서 이름이 같은 변수, 함수를 선언하면 자바스크립트 엔진은 호이스팅을 할 때 동일한 이름 중 하나만 생성한다. 따라서 해당 변수나 함수를 사용하는 다른 프로그램에서 오작동이 발생할 수 있다. 심지어 자바스크립트는 오류가 잘 발생하지 않기 때문에 디버깅이 쉽지 않다.

 

 


 

 

 

A. Reducer ➡️ 상태와 액션을 받아 새로운 상태를 리턴하는 함수, 전역상태 저장소 (정답)

B. Action ➡️ 상태를 어떻게 변화시킬 것인지에 대한 내용이 담겨있는 '객체'

C. Middleware ➡️ Redux에서 비동기 처리를 할 수 있게 해주는 미들웨어

D. Store ➡️ Redux의 전역 상태 저장소

 

 


 

 

 

(A) state / (B) value / (C) 1

➡️ Redux Toolkit에서의 리듀서는 직접적으로 상태를 변경할 수 있는 방법을 제공한다.

    state.calue += 1 ; 로 상태를 직접 수정할 수 있다.

 

 


 

 

 

A. 상태 업데이트를 동기적으로 처리하기 위해 ➡️ 상태 업데이트는 비동기적으로 처리되므로, 불변성 관리와는 관련이 없습니다.

B. 상태 업데이트가 자동으로 전역에 반영되기 위해 ➡️ 불변성 관리와 상태의 전역 반영은 직접적인 연관이 없습니다.

 

C. 컴포넌트의 리렌더링이 발생하도록 하기 위해  (정답)

    ➡️ React에서는 상태가 불변성(immutability)을 유지해야 하는 이유는 상태가 변경되었을 때 컴포넌트가 리렌더링 되도록 하기 위함이다. 만약 기존 상태를 직접 변경하면 React는 상태가 변경된 것을 인식하지 못할 수 있다. 불변성을 유지하고 새로운 객체를 반환하는 방식으로 상태를 업데이트하면, React는 이를 인식하고 컴포넌트를 다시 렌더링 할 수 있다.

 

D. 상태 변경이 컴포넌트 간에 공유되기 위해 ➡️ 불변성 관리는 상태 변경 인식 및 렌더링과 관련이 있으며, 상태 공유와는 별개의 문제입니다.

 

 


 

 

 

 

A. /contact ➡️ Next.js에서는 pages 디렉터리 내의 파일 이름이 URL경로로 자동 변환됩니다. 따라서 contact.js 파일은 /contact 경로로 접근할 수 있습니다. pages 디렉터리 내의 파일은 URL 경로와 적접적으로 매핑됩니다. (정답)

 

 


✅ 헷갈렸던 문제들 & 개념 알기


 

 

 

A. Tailwind CSS는 클래스 유틸리티 기반이며, Styled Conponents는 CSS-in-JS 기반입니다. (정답)

B. Tailwind CSS는 주로 전역 스타일을 다루며, Styled Conponents는 컴포넌트별 스타일을 다룹니다.

C. Tailwind CSS는 CSS를 별도로 작성하지 않고도 스타일을 적용할 수 있습니다.

D. Styled Conponents는 자바스크립트 파일 내에서 CSS를 작성하지 못합니다.

     ➡️ Styled Conponents는 CSS-in-JS기반이므로 반대로 설명.

 

 

➡️ Tailwind CSS는 클래스 유틸리티를 사용해 빠르게 스타일을 적용할 수 있으며, CSS 파일을 별도로 작성하지 않고도 스타일을 적용할 수 있습니다. 반면 Styled Components는 자바스크립트 파일 내에서 CSS를 작성하는 CSS-in-JS 방식을 사용하여 컴포넌트별로 스타일을 캡슐화합니다. b)는 사실이 아니므로 정답이 아닙니다. 

 


 

 

 

 

A. 상위 컴포넌트에서 모든 상태를 관리하고, 모든 하위 컴포넌트에서 직접 props로 전달한다.

     ➡️ props drilling 문제를 악화시킬 수 있다.

B. 상위 컴포넌트에서 상태를 관리하고, 상태를 변경할 때마다 하위 컴포넌트 새로 렌더링 한다.

     ➡️ props driling 문제를 해결하지 않고, 성능 문제를 야기할 수 있다.

C. Context API 또는 상태 관리 라이브러리(Redux, Mobx 등)를 사용하여 전역 상태를 관리한다. (정답)

D. 하위 컴포넌트에서 상태를 직접 관리하고 상위 컴포넌트와의 데이터 전달을 최소화한다.

     ➡️ props driling 문제를 해결하지 않고, 상태 관리를 비효율적으로 만들 수 있다.

 

 


 

 

 

 

A. thunk ➡️ 비동기 작업을 처리하기 위해 (정답)

B. saga ➡️ React/Redux 애플리케이션에서 비동기적으로 API를 호출하여 데이터를 가져오는 일과 같은 부수 효과(Side Effect)를 쉽게 처리하기 위해 사용하는 라이브러리

C. logger ➡️ reducer 실행 전후를 로그로 확인할 수 있게 해주는 미들웨어

D. promise ➡️ JavaScript에서 비동기적으로 실행하는 작업의 결과(성공 or 실패)를 나타내는 객체

 


 

 

 

A. Action ➡️ 상태를 어떻게 변화시킬 것인지에 대한 내용이 담겨있는 '객체'

B. Reducer ➡️ 상태와 액션을 받아 새로운 상태를 리턴하는 함수, 전역상태 저장소

C. Selector ➡️ 상태에서 데이터를 추출하기 위해 사용

D. Store ➡️ Redux의 전역 상태 저장소

 

 


 

 

 

A. useState ➡️ 상태를 관리하는 Hook, 상태가 변경될 때마다 컴포넌트는 리렌더링 됨

B. useReducer ➡️ 복잡한 상태로직을 처리하는 Hook, 상태 변경 시 컴포넌트가 리렌더링 됩니다.

C. useMemo

     ➡️ 계산된 값을 메모이제이션하여 성능을 최적화하는 데 사용되지만, 상태가 변경되더라도 컴포넌트를 리렌더링 할 수 있다.

D. useRef 

     ➡️ 리렌더링 시 영향을 주지 않는 값을 유지할 때 적합한 Hook, useRef로 저장된 값은 컴포넌트 리렌더링 될 때도 유지되며, 값이 변경되어도 컴포넌트가 다시 렌더링 되지 않는다. 따라서 useRef는 리렌더링과 관계없이 변수를 관리하는데 유용. (정답)

 

 


 

 

 


A. 클라이언트 측에서 JavaScript를 실행하지 않도록 합니다. ➡️ SSR과 SEO와는 관련 없음

B. 서버에서 페이지 콘텐츠를 미리 렌더링 하여 검색 엔진 크롤러가 페이지 내용을 쉽게 인식할 수 있도록 합니다. (정답)

C. 페이지 로드 속도를 향상합니다.

     ➡️ SSR의 주된 목적이 아니며, 렌더링 속도는 클라이언트와 서버의 성능에 따라 달라질 수 있다.

D. 사용자 상호작용을 관리하는 데 도움이 됩니다. ➡️ SSR과 SEO와는 관련 없음

 

 


 

참고자료

'_TIL' 카테고리의 다른 글

20240828. TIL  (0) 2024.08.28
20240813. TIL  (0) 2024.08.14
20240812. TIL  (0) 2024.08.13
20240808. TIL  (2) 2024.08.09
20240807. TIL  (3) 2024.08.08