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