플레이그라운드

값을 바꾸고, restate의 반응을 보세요.

일곱 가지 실험이 실제 패키지를 실행합니다. 왼쪽 컨트롤러는 이 웹사이트의 것이고, 오른쪽 예제는 props만 받습니다. 그래서 예제 코드에는 여러분이 실제로 작성할 코드만 남습니다.

컨트롤러 — 웹사이트 전용props — 연결 다리예제 — 복사할 코드
01

두 화면, 하나의 스토어

여러 컴포넌트가 같은 값이 필요합니다. 한 번 선언하고 어디서나 읽으세요.

관찰할 것
  • 증가 버튼을 누르면 모든 화면이 같은 순간에 새 숫자를 보여 줍니다.
  • 화면 수를 바꾸면 새 화면은 현재 값에서 시작합니다.

예제를 준비하는 중…

시작하기
02

바뀐 곳만 렌더

큰 스토어라도 변경마다 모든 컴포넌트를 다시 렌더하면 안 됩니다.

관찰할 것
  • 메모 수정: 스토어 전체를 읽는 카드만 렌더합니다.
  • 상품 추가: 상품 수와 요약만 렌더하고 쿠폰 카드는 그대로입니다.
  • shallow를 끄면 selector가 매번 새 객체를 반환하므로 요약이 변경마다 렌더합니다.

예제를 준비하는 중…

필요한 것만 구독하기
03

여러 변경, 알림 한 번

두 스토어를 하나씩 바꾸면 구독자가 절반만 바뀐 상태를 볼 수 있습니다.

관찰할 것
  • 따로 비우기: 구독자가 상품 0개와 이전 쿠폰을 함께 봅니다.
  • batch로 비우기: 두 스토어가 모두 바뀐 뒤 구독자가 한 번 실행됩니다.

예제를 준비하는 중…

필요한 것만 구독하기
04

저장은 원할 때

편집은 메모리만 바꿉니다. 저장은 명시적인 동작이고, 상태가 지금 무슨 일이 일어나는지 알려 줍니다.

관찰할 것
  • 입력하면 dirty가 켜지고 아직 아무것도 쓰지 않습니다.
  • 지연을 늘리고 저장하면 쓰는 동안 operation에 save가 표시됩니다.
  • 다시 실행하면 저장한 초안이 IndexedDB에서 복원됩니다.

예제를 준비하는 중…

저장은 원할 때
05

빠르게 입력해도 저장은 한 번

입력할 때마다 저장하면 저장소가 넘칩니다. autoSave는 입력이 멈출 때까지 기다립니다.

관찰할 것
  • 문장을 입력하면 입력 수는 빠르게 오르고, 쓰기 수는 멈출 때마다 하나씩 늘어납니다.
  • 매 변경을 고르면 입력마다 쓰지만, 저장된 값으로 되돌린 변경은 쓰지 않습니다.

예제를 준비하는 중…

저장은 원할 때
06

장애 실험실

저장소를 느리게 하고, 실패시키고, 없애 보세요. restate가 데이터를 지키고 문제를 알려 주는 모습을 확인합니다.

관찰할 것
  • 지연을 늘리고 세 번 연속 저장하면 요청들이 한 번의 쓰기를 함께 쓰므로 pending은 1에 머물고 세 결과가 함께 도착합니다.
  • 쓰기 실패를 켜고 저장하면 dirty는 true로 남고 error에 원인이 표시됩니다.
  • 저장소를 없애면 편집은 계속되고 저장만 STORAGE_UNAVAILABLE로 거부됩니다.

예제를 준비하는 중…

안정성 설계
07

문서마다 독립된 상태

열린 문서마다 자기 상태가 필요하고, 문서를 닫으면 그 상태를 해제해야 합니다.

관찰할 것
  • 문서 A와 B에 각각 입력하면 서로의 글이 섞이지 않습니다.
  • 문서 A를 닫았다가 다시 열면 비어 있습니다. scope가 파괴되었기 때문입니다.

예제를 준비하는 중…

컴포넌트가 소유하는 상태

문서 검색

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