ilokesto

2.0으로 이전하기

이 가이드는 2.0에서 도입된 상태 생성과 알림 동작 변경을 설명합니다.

한 번 만들고 명시적으로 연결하기

기존:

import { create } from '@ilokesto/state/react';
const useCounter = create({ count: 0 });

권장:

import { createStore } from '@ilokesto/state';
import { bind } from '@ilokesto/state/react';
const counter = createStore({ count: 0 });
const useCounter = bind(counter);

기존 편의 API도 계속 사용할 수 있습니다. 액션으로 갱신한다면 createReducer(reducer, valueOrStore)와 bindReducer(handle)을 사용하세요. 이전에 비어 있던 루트 엔트리포인트는 상태 생성과 조합 API를 내보냅니다.

알림 동작 변경

2.0 이전2.0
중첩 업데이트가 재귀적으로 기존 알림에 끼어듦상태는 즉시 저장하고 알림은 동기 FIFO 순서로 처리
뒤쪽 selector가 중간 변경을 놓칠 수 있음각 저장 시점의 스냅샷으로 selector 평가
해제한 리스너가 현재 알림에서 실행될 수 있음아직 실행하지 않은 알림에도 해제를 즉시 적용
같은 일반 콜백을 등록하면 한 구독으로 합쳐짐등록마다 독립적인 해제 함수 소유
리스너 오류로 뒤쪽 알림 중단나머지 알림을 처리한 뒤 AggregateError 전달

각 전이를 관찰하려면 subscribeSelector의 콜백 인자를 사용하세요. 일반 subscribe는 인자가 없는 변경 신호입니다. 그 안의 getState()는 항상 가장 최신 값을 읽으므로 현재 알림 기록보다 새 값을 반환할 수 있습니다. 새로 등록한 구독에는 등록 전에 만들어진 알림 기록을 전달하지 않습니다.

리스너 오류는 가장 바깥의 동기 업데이트 호출에서 처리하세요. AggregateError.errors에 원래 던진 값이 담깁니다. 이미 저장된 상태는 되돌리지 않으므로 오류를 롤백 신호로 해석하지 마세요. Updater와 미들웨어 오류는 알림 오류로 변환하지 않고 기존처럼 직접 전파합니다.

함수와 생명주기

함수를 값으로 저장하려면 store.set(fn)을 사용하세요. store.update(updater)는 명시적인 계산이고 setState(fn)도 기존처럼 updater로 해석합니다. Svelte의 set(fn)은 이제 함수를 호출하지 않고 저장합니다.

Store의 프로토타입 메서드는 여전히 수신 객체가 필요합니다. 서브클래스와 미들웨어가 붙인 기능은 유지합니다. 읽기 전용 소비자는 ReadableStore<T>, 쓰기가 필요한 구조적 연동은 StoreApi<T>를 사용하세요.

지원 프레임워크나 미들웨어 기능을 제거하지 않았습니다. 기존 pipe 순서, 리듀서 식별, SSR 초기 스냅샷, 자원 정리 계약은 유지합니다. 이전 알림의 경계 동작에 의존하는 코드는 2.0으로 이전할 때 수정하세요.

목차