본문 바로가기

전체 글3

TanStack Query의 FocusManager는 무엇일까? (근데 이제 refetchOnWindowFocus 옵션을 곁들인) 글을 들어가며본 글에서는 TanStack Query에서 제공하는 FocusManager를 기반으로, useQuery의 refetchOnWindowFocus 옵션의 원리를 소개하고자 한다.FocusManager는 무엇인가?The FocusManager manages the focus state within TanStack Query - TanStack Query 공식문서FocusManager는 TanStack Query 내부에서 사용되는 focus 상태를 관리하는 대상으로 설명되어 있다.FocusManager는 어떻게 구현되어 있을까?FocusManager 클래스로 구현되어 있는 객체이다. FocusManager 클래스는 옵저버 패턴을 기반으로 구현되어 있으며, Subscribable 클래스를 상속받고 있.. 2024. 10. 26.
상태 관리와 zustand (zustand 동작 원리를 이해하기) 글을 들어가며본 글에서는 상태 관리에 대한 개념을 소개하고, zustand의 구현 코드를 기반으로 동작 원리를 살펴보려고 한다. 글 내용 중 zustand 코드는 v5 버전을 기준으로 작성되었다.상태와 상태 관리프론트엔드 영역에서 상태란 UI를 표현하기 위해 사용되는 데이터이다. 상태는 시간에 따라 변화될 수 있는 값이다. 상태 관리는 상태 데이터를 관리하는 객체라고 정의하여, 상태 관리 객체의 책임을 생각해보자. 책임은 더 다양할 수 있지만, 4가지 정도로 정의할 수 있다.최신 상태를 알고 있다.최신 상태를 반환할 수 있다.상태를 변경할 수 있다.상태가 변경될 때, 변경된 상태를 전파할 수 있다.상태 관리 객체의 책임을 기억하며, zustand 코드를 살펴보자.zustandzustand는 flux 패턴.. 2024. 10. 12.
[TypeScript] "T extends U ? X : Y"에 대한 고찰 TL;DR 타입은 가능한 값의 집합이다. 서브 타입과 슈퍼 타입을 집합의 관계로 설명할 수 있다. 조건부 타입은 분배법칙을 허용한다. 타입은 집합 타입은 가능한 값의 집합이다. 타입은 가능한 값의 집합? 직관적으로 한 번에 이해가 잘 되지 않는다. 예시를 통해 타입과 집합 관계를 이해해보자. never 타입은 어떠한 값도 할당할 수 없는 타입이다. 어떠한 값도 할당할 수 없기 때문에 공집합이라고 말할 수 있으며, never = {}라고 표기할 수 있다. 예를 하나 더 들어보자. number 타입에는 정수, 소수를 할당할 수 있다. 그러면 number = {정수, 소수}라고 표기할 수 있다. 서브타입과 슈퍼 타입 집합 A가 집합 B의 부분 집합이면 A ⊂ B라고 표기할 수 있다. 두 집합이 서로 같을 때에.. 2022. 6. 7.