[Frontend 기술면접 top30] 1.상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요?

Carrie·2023년 7월 28일
0
post-custom-banner

Q. 리액트에서 상태관리를 하는 이유는 뭘까?

1. 컴포넌트 간 데이터 공유

리액트는 일반적으로 여러 컴포넌트로 구성되며, 이러한 컴포넌트들이 서로 데이터를 공유해야 한다. 상태 관리를 통해 이를 원활하게 수행할 수 있다.

2. 코드의 예측 가능성과 유지보수

전역 상태 관리를 사용하면 앱 전체에서 상태 변화를 쉽게 추적할 수 있으며, 이로 인해 코드의 예측 가능성과 유지보수가 향상된다.

3. 성능 최적화

필요한 컴포넌트만 다시 렌더링할 수 있도록 상태 관리를 구성함으로써 성능을 최적화할 수 있다.

4. 개발자 경험 개선

상태를 중앙에서 관리하면 디버깅과 테스트가 용이해져 개발자의 작업 효율이 향상된다.

Q. state관리는 어떻게 할까?

프로젝트의 요구사항과 상태 관리의 복잡성에 따라 다르나, 간단한 로컬 상태 관리의 경우 useState로, 복잡한 전역 상태 관리를 해야 할 경우 리덕스를 사용한다.

1. useState로 상태 관리하기

useState는 리액트에서 제공하는 훅으로, 함수 컴포넌트 내에서 상태 관리를 할 수 있게 해준다.

💡 특징

  • 로컬 컴포넌트 내에서 상태를 관리하는데 적합하다.
  • 간단한 상태 로직을 다루는 데 유용하며 쉽게 사용할 수 있다.
  • 전역 상태 관리나 복잡한 상호작용을 위한 방법은 제공되지 않는다.

2. 리덕스로 상태 관리하기

액션, 리듀서, 스토어의 개념을 사용하여 상태 변화를 관리한다.

💡 특징

  • 전역 상태 관리에 적합하다.
  • 복잡한 상호작용과 상태 로직을 관리할 수 있다.
  • 상태의 변화를 추적하고 디버깅할 수 있는 다양한 도구가 있다.
  • 대규모 프로젝트나 여러 컴포넌트 간에 상태를 공유해야 하는 경우 유용하다.

🧑‍💼 면접 답변 정리하기

리액트에서 상태 관리를 하는 이유는 효율적인 렌더링을 위한 것입니다. 리액트는 상태(state) 또는 속성(props)의 변화가 있을 때 해당 컴포넌트와 그 자식 컴포넌트들을 다시 렌더링합니다. 그러나 이러한 방식은 대규모 애플리케이션에서 성능 문제를 발생시킬 수 있습니다. 상태 관리 도구를 사용하여, 상태 변화에 따른 렌더링을 최적화하고 관련된 컴포넌트만 재렌더링되도록 할 수 있습니다.
평소 로컬 컴포넌트 내에서 간단한 상태 관리를 위해서는 useState를 사용합니다. 중소규모의 애플리케이션에서는 주로 Recoil을 사용한 경험이 있습니다. Recoil을 사용한 이유는 Atom을 이용하여 여러 컴포넌트 간에 상태를 쉽게 공유할 수 있기 때문입니다. 대규모 프로젝트나 여러 컴포넌트 간에 상태를 공유해야 하는 경우에는 Redux를 사용합니다.

profile
Markup Developer🧑‍💻
post-custom-banner

0개의 댓글