caro-kann을 소개합니다

caro-kann은 useSyncExternalStore 훅을 내부적으로 사용해 만든 전역 상태 관리 도구입니다. TypeScript를 지원하며 Next.js와 React.js 모두 호환됩니다. useState와 유사한 문법으로 React.js에 익숙한 개발자라면 직관적으로 사용할 수 있습니다.

caro-kann@4.0.0에서 새로 추가된 것#

  • 이제 zustand 미들웨어는 완전히 제거되었습니다. 또한 validate 미들웨어의 사용법이 변경되었습니다.
  • useStore.deriveduseStore.readOnly로 이름이 변경되었습니다. 또한 useStore에 writeOnly 메서드가 추가되었습니다. 이를 통해 상태를 변경시켜야 하지만, 상태를 직접 구독할 필요가 없는 컴포넌트에서도 더욱 명확하고 효율적으로 상태 관리를 할 수 있게 되었습니다. 이러한 변경은 코드의 의도를 더욱 분명하게 하며, 불필요한 리렌더링을 줄이는 데에도 기여합니다.
  • 지난 버전에서 사라졌던 provider가 돌아왔습니다. 이를 통해 특정 컨텍스트에서 독립적인 상태 트리를 구성할 수 있어, 애플리케이션의 유연성과 재사용성이 한층 높아졌습니다.
  • 선택자 함수를 작성할 때 따라야 할 규칙이 모두 제거되었습니다. 이에 따라 개발자는 불필요한 제약 없이 자유롭게 선택자 함수를 정의할 수 있게 되었으며, 이는 코드의 유연성과 표현력을 높이는 데 기여합니다. 내부적으로는 선택자 처리 방식이 개선되어, 이러한 자유에도 불구하고 성능 저하 없이 안정적인 상태 관리가 가능해졌습니다.
  • 이제 선택자 함수의 유무에 관계 없이 setValue는 항상 일관된 방식으로 동작합니다. 이 변화는 API의 직관성을 높이고, 예외적인 동작으로 인한 버그 발생 가능성을 줄이는 데 큰 도움이 됩니다. 결과적으로 개발자는 보다 예측 가능하고 안정적인 방식으로 상태를 업데이트할 수 있습니다.
  • 복잡한 객체 상태를 간편하게 변경하기 위해 setValue에 사용할 수 있는 유틸리티 함수 adaptor가 추가되었습니다.
  • 여러 useStore를 하나로 병합하는 유틸리티 함수 merge가 추가되었습니다. 이를 통해 개발자는 `선택자 함수 + adaptor`를 사용한 top-down 방식으로도, `merge`를 사용한 Bottom-up 방식으로도 유연하게 상태를 구성할 수 있게 되었습니다. 각 방식은 컴포넌트 구조나 데이터 흐름에 따라 선택적으로 적용할 수 있어, 다양한 아키텍처 요구사항에 효과적으로 대응할 수 있습니다. 전체적으로 이번 업데이트는 일관성과 확장성을 모두 고려한 개선으로, 실제 개발 환경에서의 생산성과 유지보수성을 크게 향상시킵니다.

설치 방법#

caro-kann은 아래의 다양한 방법으로 설치할 수 있습니다.

Caro-Kann - 강력한 상태 관리 | ilokesto - React 라이브러리 모음