리액트는 일반적으로 여러 컴포넌트로 구성되며, 이러한 컴포넌트들이 서로 데이터를 공유해야 한다. 상태 관리를 통해 이를 원활하게 수행할 수 있다.
전역 상태 관리를 사용하면 앱 전체에서 상태 변화를 쉽게 추적할 수 있으며, 이로 인해 코드의 예측 가능성과 유지보수가 향상된다.
필요한 컴포넌트만 다시 렌더링할 수 있도록 상태 관리를 구성함으로써 성능을 최적화할 수 있다.
상태를 중앙에서 관리하면 디버깅과 테스트가 용이해져 개발자의 작업 효율이 향상된다.
프로젝트의 요구사항과 상태 관리의 복잡성에 따라 다르나, 간단한 로컬 상태 관리의 경우 useState
로, 복잡한 전역 상태 관리를 해야 할 경우 리덕스를 사용한다.
useState
로 상태 관리하기useState
는 리액트에서 제공하는 훅으로, 함수 컴포넌트 내에서 상태 관리를 할 수 있게 해준다.
💡 특징
- 로컬 컴포넌트 내에서 상태를 관리하는데 적합하다.
- 간단한 상태 로직을 다루는 데 유용하며 쉽게 사용할 수 있다.
- 전역 상태 관리나 복잡한 상호작용을 위한 방법은 제공되지 않는다.
액션, 리듀서, 스토어의 개념을 사용하여 상태 변화를 관리한다.
💡 특징
- 전역 상태 관리에 적합하다.
- 복잡한 상호작용과 상태 로직을 관리할 수 있다.
- 상태의 변화를 추적하고 디버깅할 수 있는 다양한 도구가 있다.
- 대규모 프로젝트나 여러 컴포넌트 간에 상태를 공유해야 하는 경우 유용하다.
리액트에서 상태 관리를 하는 이유는 효율적인 렌더링을 위한 것입니다. 리액트는 상태(state) 또는 속성(props)의 변화가 있을 때 해당 컴포넌트와 그 자식 컴포넌트들을 다시 렌더링합니다. 그러나 이러한 방식은 대규모 애플리케이션에서 성능 문제를 발생시킬 수 있습니다. 상태 관리 도구를 사용하여, 상태 변화에 따른 렌더링을 최적화하고 관련된 컴포넌트만 재렌더링되도록 할 수 있습니다.
평소 로컬 컴포넌트 내에서 간단한 상태 관리를 위해서는 useState를 사용합니다. 중소규모의 애플리케이션에서는 주로 Recoil을 사용한 경험이 있습니다. Recoil을 사용한 이유는 Atom을 이용하여 여러 컴포넌트 간에 상태를 쉽게 공유할 수 있기 때문입니다. 대규모 프로젝트나 여러 컴포넌트 간에 상태를 공유해야 하는 경우에는 Redux를 사용합니다.