Remix를 사용하면 상태관리 도구가 왜 필요 없는지 알아봅니다.
TLDR : Action이 발생할 때마다 변경된 데이터를 Loader를 통해 Component에 반영해주면 되기 때문입니다.
해당 로직은 서버에서 동작하므로 동기화에 대해 걱정할 필요도 없습니다.
원문 링크입니다 : https://remix.run/blog/remix-data-flow
Data Flow in Remix
Remix takes the idea of “one-way data flow” and extends it across the network, so your UI truly is a function of state: from the client to the server and back again.
remix.run
React가 처음 등장했을 때 가장 매력적인 점 중 하나는 "단방향 데이터 흐름(one-way data flow)"이었습니다.
이것은 “Thinking in React”문서에 여전히 설명되어 있습니다.
계층 구조의 맨 위에 있는 컴포넌트는 데이터 모델을 Props로 사용합니다.
컴포넌트의 데이터 모델을 변경하고 root.render()를 다시 호출하면 UI가 업데이트됩니다.
UI가 업데이트되는 방식과 변경 사항을 확인할 수 있습니다.
React의 단방향 데이터 흐름(단방향 바인딩이라고도 함)은 리액트의 모든 것을 모듈화하고 빠르게 동작합니다.

ui = fn(state)
“UI는 상태의 함수이다”,
- 클라애언트 내 단방향 데이터 르흠
- 서버와 클라이언트 간 ??? 데이터 흐름

많은 상태 관리 도구는 클라이언트의 상태를 관리하는 데만 도움이 되지만
클라이언트의 상태와 서버의 상태 사이의 간격인 네트워크 틈(the network chasm)을 효과적으로 건너는 데 도움이 되지 않습니다.

UI는 원격 상태와 로컬 상태의 함수입니다.
UI is a function of your remote state and your local state.
그러나 Remix에서는 원격 상태가 로컬 상태에서 더 쉽게 풀릴 수 있기 때문에
"상태의 함수로서의 UI"라는 개념이 변형되었습니다.

Remix를 사용하면 UI가 로컬뿐만 아니라 네트워크 전체의 상태 함수가 됩니다.
Remix의 데이터 추상화에 대한 흥미로운 비유(interesting analogy)는 React의 가상 DOM 추상화입니다.
React에서는 DOM을 직접 업데이트하는 것을 신경쓰지 않아도 됩니다.
상태가 설정/변경되면 가상 DOM이 DOM을 효율적으로 업데이트하는 방법을 알아내기 위해 모든 작업을 수행합니다.
Remix는 이 아이디어를 영속 데이터용 API 계층으로 확장합니다.
Remix에서는 클라이언트 측 상태를 서버와 동기화하는 것에 대해 걱정하지 않아도 됩니다.
변이(mutation)로 "상태를 변경"하면 로더가 인계받아 최신 데이터를 다시 가져오고 컴포넌트 view를 업데이트합니다.
Remix를 사용하면, 애플리케이션 상태 관리에 대해 걱정할 필요가 없습니다.
Redux, Apollo는 매우 훌륭한 도구이지만 Remix를 사용할 때 필요하지 않습니다.
클라이언트 측 JavaScript가 전혀 필요하지 않기 때문입니다.
당신의 앱을 생각해보세요. 그리고 상태 관리에 필요한 모든 코드를 버릴 수 있다고 상상해 보세요.
Remix와 함께라면 가능합니다.
브라우저에서 앱이 JavaScript 없이 작동할 수 있다면
브라우저엔 상태 관리를 위한 어떤 코드도 필요하지 않습니다.
'FrontEnd' 카테고리의 다른 글
리믹스와 엣지 컴퓨팅[Remix and “The Edge”] (0) | 2022.10.08 |
---|---|
리액트 서버 컴포넌트와 리믹스[React Server Components and Remix] (0) | 2022.10.07 |
Vue.js plugin(플러그인) 만들어보기 (0) | 2022.10.07 |
Vue.js 커스텀 Directive 만들어보기 (0) | 2022.10.07 |
Vue3과 React 훅의 반응성 비교 : 불변 VS 가변 (0) | 2022.10.06 |