[Library] Zustand
2024. 3. 19. 15:31ㆍ📚 Library
무엇에 쓰는 물건인고?
전역상태관리 Library
전역상태관리란 ?
- 리액트는 여러 component들을 조합하여 하나의 HTML을 구성하는데, 하나의 state를 다른 component와 공유하려면 props 과정을 거쳐야한다.
- 이 때 props는 상위 component에서 하위 component로 단방향성으로만 이동할 수 있고, 한 번에 하나의 component만 이동할 수 있다.
- state는 component에 할당 된 메모리; 즉 데이터라고 볼 수 있다.
- 최상위 component의 State를 3중중첩된 하위 component에 전달하려면 3번의 Props를 거쳐야 하고 이것이 더욱 복잡해지면 매우 비효율적인 문제가 발생하는데 이를 propsdrilling 이라고 한다.
- 전역상태관리는 이러한 현상을 방지하고 많은 comnponent에 공유되는 state를 효율적으로 관리하기 위해 중앙 store에 state를 할당하고 이를 원하는 component에서 import 하여 바로바로 사용할 수 있게 해준다.
- props drilling 현상 방지 + state 한 눈에 보며 추적 및 유지/보수에 편리함
전역상태관리 라이브러리의 할아버지: Redux
- Redux는 가장 먼저 그리고 널리 알려진 상태관리 라이브러리 중 하나이다.
- 동기/비동기 처리에 취약하고 보일러플레이트가 많은 치명적인 단점이 있어 최근에는 이러한 약점들을 보완한 전역상태관리 라이브러리들이 트랜드이다.
- Store에 state와 action을 생성하고 원하는 component에 import 하여 사용한다.
- action이란 state의 동작이다.
- action을 생성할 때에는 reducer를 사용해야 한다.
- import 할 때에는 provider와 dispatch를 사용해야 한다.
Zustand의 장점
- 다른 상태관리라이브러리 보다 훨씬 가볍다 !
- 보일러플레이트로부터 자유로워질 수 있다.
- store에 state와 action만 생성하고, 원하는 component에 import하여 바로 사용가능 ! (reducer, provider, dispatch등 불필요)
- npm download 순위가 가장 높기에 각종 커뮤니티에 여러 정보들이 많다.
한계
- 대규모 프로젝트에서 도입하기에는 어려움이 있다.
- 23년 우아콘테스트에 따르면 우아한형제들에서 clientStore는 Zustand로 serverStore는 react-query를 사용하여 상태관리를 함으로 이러한 한계 를 극복했다고 한다.
Refe: https://docs.pmnd.rs/zustand/getting-started/introduction, https://www.youtube.com/watch?v=QZcYz2NrDIs, https://www.youtube.com/watch?v=nkXIpGjVxWU
'📚 Library' 카테고리의 다른 글
[Library] react-hook-form (0) | 2024.03.07 |
---|---|
[Library] Zod (0) | 2024.03.07 |
[Library] [shadcn/ui] (0) | 2024.03.04 |
[Library]lodash에 대하여 (0) | 2023.04.27 |