<aside> 📋 CRDT 시리즈
CRDT를 블럭 여러개에 적용해봐요. - (4) 작업을 복습해볼게요. 공동 편집을 지원하는 왜비나 회의록은 두 개의 CRDT 계층을 가져요.
<Mom />
회의록 내부의 블럭 id들을 CRDT로 관리해요.<Block />
블럭 내부의 텍스트 문자들을 CRDT로 관리해요.그리고 회의록 컴포넌트는 가지고 있는 블럭 id를 사용해 이렇게 블럭을 렌더링해요.
{blocks.map((id) => (
<Block key={id} id={id} />
))}
CRDT의 localInsert/Delete
, remoteInsert/Delete
를 활용해 블럭을 추가하고 삭제하는 기능이 생겼지만 실제로 사용하기에는 불편했어요.
블럭을 추가해도 커서가 기존 위치에 고정되어있고, 삭제했을 때는 심지어 사라져버렸거든요.
UX를 위해 블럭을 추가하고 삭제하는 동작에 사용자 커서가 이동되는 기능이 필요했어요.