restate / v1.0.0

자주 묻는 질문

restate의 렌더링, 저장, scope, 오류에 관한 자주 묻는 질문과 답.

기본Provider가 필요한가요?

아니요. 스토어는 모듈 수준의 값이라 import한 어느 컴포넌트에서나 쓸 수 있습니다. 상태가 컴포넌트 인스턴스 하나에 속해야 한다면 useRestateScope를 쓰세요.

기본왜 변경마다 컴포넌트가 렌더하나요?

selector 없이 훅을 부르면 값 전체를 구독합니다. 컴포넌트가 보여 주는 것만 반환하는 selector를 넘기세요.

기본selector가 객체를 반환하는데 매번 렌더합니다.

새 객체는 이전 객체와 Object.is로 같지 않습니다. 두 번째 인자로 shallow를 넘기거나 필드를 따로 선택하세요.

기본객체를 고쳤는데 아무것도 바뀌지 않아요.

set이 같은 객체를 받아 restate가 변화를 보지 못했습니다. set에서 새 객체나 배열을 반환하세요.

저장저장 데이터는 어디서 기다리나요?

클라이언트 진입점에서 한 번, 앱을 렌더하기 전에 await restateManager.ready를 하세요. 그러면 컴포넌트는 저장된 값을 바로 읽습니다. useRestateScope 안의 스토어는 자기 scope.manager.ready를 기다립니다.

저장데이터는 언제 저장소에 쓰이나요?

save()를 부를 때, 또는 autoSave를 켰다면 변경 뒤에만 씁니다. 편집은 메모리만 바꾸며, status().dirty로 저장하지 않은 변경이 있는지 알 수 있습니다.

저장autoSave와 save() 중 무엇을 쓸까요?

항상 저장해야 하는 설정과 초안에는 autoSave를 쓰세요. 저장 버튼이나 폼 제출처럼 사용자가 정하는 경우에는 save()를 쓰세요. autoSave를 켜도 pagehide 같은 때 save()를 부를 수 있습니다.

저장시크릿 창이나 SSR에서 저장이 실패합니다.

저장소를 쓸 수 없으면 스토어는 메모리로 계속 동작하고 status().available은 false, save()는 STORAGE_UNAVAILABLE로 거부됩니다. 앱 시작은 그대로 성공합니다.

오류restateManager.ready가 거부되었어요.

기록을 읽거나 마이그레이션하거나 검증하지 못하면 BULK_OPERATION_FAILED로 거부됩니다. error.failures가 스토어와 오류를 하나씩 알려 줍니다. 기록을 고치거나 지운 뒤 그 스토어의 initialize()를 부르고 ready에 다시 접근하세요.

오류QUEUE_FULL이나 STORAGE_TIMEOUT이 보여요.

쌓는 작업보다 저장소가 느립니다. 반복문에서 save()를 연달아 부르지 마세요. 기다리는 저장이 이미 가장 새 값을 씁니다. 또는 지연을 준 autoSave를 쓰세요. 필요하면 maxPendingOperations와 operationTimeoutMs를 조절하세요.

오류늦게 끝난 요청이 언마운트 뒤 스토어에 씁니다.

파괴된 스토어의 set()과 reset()은 언마운트 뒤 React 상태 갱신처럼 무시됩니다. 구독은 STORE_DESTROYED를 던지고 저장소 명령은 거부됩니다.

Scopescope 스토어가 새 props를 무시해요.

factory는 useState 초기값처럼 한 번만 실행됩니다. 문서마다 key를 주어 렌더하면 새 문서는 새 scope를 받습니다.

Scope하이드레이션 불일치를 어떻게 피하나요?

서버와 클라이언트에 같은 서버 데이터를 props로 넘기고, useRestateScope에서 그 값으로 스토어를 만드세요. 초기값이 서버 스냅샷이 됩니다.

Scopescope 스토어가 restateManager.ready에 없어요.

scope 안의 저장 스토어는 소유 컴포넌트가 클라이언트에서 커밋된 뒤 불러오기를 시작합니다. 그 컴포넌트 안의 로딩 경계에서 scope.manager.ready를 기다리세요.

저장React Native에서 MMKV_UNAVAILABLE이 나요.

react-native-mmkv와 네이티브 의존성을 설치하고 앱을 다시 빌드하세요. Expo에서는 개발 빌드를 쓰세요. 메모리 스토어는 MMKV 없이도 동작합니다.

문서 검색

모든 가이드의 제목·설명·본문을 검색합니다.