이번 포스팅에서는 Zustand의 발전 비하인드 스토리를 공유하고 싶습니다. 정확히 말하면 저는 Zustand의 원저자가 아니었고 Zustand v0가 탄생했을 때 다른 전역 상태 라이브러리, 특히 React-Tracked를 개발하고 있었습니다. 그런데 저는 이제 저를 Zustand의 (2차) 작가라고 생각합니다.
저를 포함한 다른 도서관과 비교하면서 Zustand를 언급한 내 트윗을 발견했습니다.
그 시점에서 저는 전역 상태가 React Concurrent 모드와 작동하도록 React Context를 통해 전달되어야 한다고 생각했습니다. 그래서 우리 도서관과 다른 도서관을 구별하기 위해 비교표를 만들었는데, Zustand도 그 중 하나였습니다. 2019년의 일입니다.
2020년에는 포이만드레스 그룹에 합류해 Zustand의 개발을 맡게 되었습니다. 당시 나의 관심은 전역 상태 라이브러리가 React Concurrent 모드와 작동하도록 만드는 것이었습니다. Concurrent 모드의 모든 이점을 얻을 수는 없었지만 전역 상태를 Concurrent 모드와 호환되도록 만드는 useMutableSource라는 실험적인 API가 있었습니다.
React-Tracked가 포함된 React Context 기반 솔루션을 사용하여 많은 것을 실험하고 있었는데 React Context 없이 전역 상태로 무엇을 할 수 있는지 궁금했습니다. Zustand는 한 살이었지만 아무도 그것을 관리하지 않았습니다. 그래서 인수하기로 결정했습니다.
실험적인 useMutableSource API가 아직 준비되지 않았으므로 첫 번째 작업은 다양한 항목을 업데이트하고 일부 버그를 수정하는 것이었습니다. 이때 Zustand v3가 탄생했습니다. 내 희망은 useMutableSource를 사용하여 v4를 곧 출시하는 것이었지만 그런 일은 일어나지 않았습니다. 그 뒤에는 또 다른 사연이 있습니다.
요즘에는 전역 상태를 외부에 두고 선택적으로 React Context를 사용하여 저장소를 전달하는 것이 잘 알려진 패턴입니다. Zustand는 이 패턴의 선구자였습니다. 사람들은 React Context에 전역 상태가 없는 것에 대해 매우 회의적이었고 우리는 이것이 유효한 패턴임을 설명하는 데 어려움을 겪었습니다.
Zustand에서 제가 중요하게 생각하는 것 중 하나는 간단한 구현과 작은 번들 크기입니다. 소스 코드를 보면 최소한의 스토어 구현으로 React Hooks를 사용하는 것 외에는 아무것도 없다는 것을 알 수 있습니다.
작성 시점을 기준으로 Zustand v4는 매우 발전된 TypeScript 지원 기능을 갖춘 최신 버전이며, 코드는 v3에서 거의 완전히 다시 작성되었습니다. 다음 릴리스를 위한 Zustand v5 준비가 거의 완료되었습니다.
마지막으로 이 프로젝트를 유지하는 여러 기여자가 있습니다. 제가 프로젝트를 맡았을 때 이런 일이 일어날 것이라고는 예상하지 못했습니다. 나는 그것에 대해 매우 감사합니다. 여러분 감사합니다. <script> // Detect dark theme var iframe = document.getElementById('tweet-1141004414129324032-562'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1141004414129324032&theme=dark" } </script>
위 내용은 Zustand가 태어난 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!