concurrent mode 에서 발생할 수 있는 tearing 이란 무엇일까?

ref - https://github.com/reactwg/react-18/discussions/69

TL;DR

Example

A버튼을 눌렀을 때 외부 스토어의 상태가 변경된다고 해보자. 그리고 해당 스토어의 값을 구독하고 있는 컴포넌트는 A버튼을 포함하여, B,C 가 있다.

동기적 렌더링일 경우..

동시성 모드를 지원할 경우..

그런데 여기서 좀 의문점이 드는게, A버튼을 클릭하면 외부 스토어의 값이 변경되는데, 이에 따라 A버튼이 왜 바로 리렌더링이 안되는가? 였음. 즉, A버튼의 리렌더링이 B,C 컴포넌트의 렌더링보다 우선순위가 낮은가?에 대한 의문이 들었음.

그래서 react 는 useSyncExternalStore 를 만들었음