아폴로 클라이언트 캐시와리덕스
Redux Store에서 Apollo Graphql Client와 함께 제공되는 Apollo 클라이언트 캐시를 사용하도록 마이그레이션하려고 합니다.
Apollo Client를 다른 데이터 관리 솔루션과 차별화하는 주요 기능 중 하나는 표준화된 캐시입니다.Apollo Client를 설정하기만 하면 추가 구성 없이 지능형 캐시를 바로 사용할 수 있습니다.
Redux에서는 부작용으로부터 받은 응답을 바탕으로 액션, 타입, 디스패치 액션을 작성하고 리듀서를 사용하여 스토어의 데이터를 설정해야 합니다.이것은 아폴로 클라이언트가 자동으로 수행합니다.
질문:
1) Redux에서 Apollo Client Cache로 전환할 때의 이점은 무엇입니까?
2) Apollo Client Cache로 이행하기 전에 주의해야 할 사항이 있습니까?
당신은 사과를 오렌지에 비유하고 있어요. 높은 에서 둘 다요.redux
★★★★★★★★★★★★★★★★★」apollo-client
글로벌 애플리케이션 상태를 관리할 수 있는 방법을 제공합니다. ★★★★★★★★★★★★★★.redux
를 사용하면 정의한 액션에 따라 변경되는 예측 가능한 상태 컨테이너를 만들 수 있습니다., ,, ②, ,, ,,redux
공공: :
- 예측 가능성환원기는 순수한 함수입니다. 동일한 상태와 작용이 주어지면 환원기는 항상 같은 결과를 낳습니다.
- 테스트 가능성환원기는 단순한 기능이기 때문에 유닛 테스트도 간단합니다.
- 확장성redux는 코드를 특정 방식으로 구성하도록 강제하기 때문에 코드를 보다 쉽게 유지 관리할 수 있습니다.코드 베이스가 커지더라도 다른 개발자가 코드를 디버깅할 수 있습니다.
Dan Abromov씨는, 그 밖에 몇개의 메리트를 지적하고 있습니다.
- 제품 개발자가 재생하여 오류를 재현할 수 있도록 사용자 작업을 직렬화하고 상태 스냅샷과 함께 자동화된 버그 보고서에 첨부합니다.
- 코드 작성 방법을 크게 변경하지 않고 협업 환경을 구현하기 위해 네트워크를 통해 작업 개체를 전달합니다.
- 코드 작성 방법을 극적으로 변경하지 않고 실행 취소 이력을 유지하거나 낙관적인 돌연변이를 구현할 수 있습니다.
- 개발 중인 상태 이력 사이를 이동하고 코드가 변경되었을 때 작업 이력에서 현재 상태를 TDD로 재평가합니다.
- 제품 개발자가 앱에 사용할 사용자 지정 도구를 만들 수 있도록 개발 도구에 전체 검사 및 제어 기능을 제공합니다.
- 대부분의 비즈니스 로직을 재사용하면서 대체 UI를 제공합니다.
ㅇㅇ.redux
이치노그러나 고객, 고객님의 애플리케이션, 고객님의 팀 모두 글로벌 상태를 관리하는 방법뿐만 아니라 이를 사용함으로써 많은 이점을 얻을 수 있습니다.이고 복잡한 기능을 사용할 , redux는 그럴 가치가 없습니다.redux
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 상태를하는 방법뿐이라면 를 할 수 .apollo-client
다른 API 및 Context API를 합니다.useReducer
훅을 사용하여 자체 솔루션을 롤링합니다.
아폴로 클라이언트 @client
로컬 상태를 관리하는 지시문은 특히 GraphQL API를 쿼리하기 위해 라이브러리를 이미 사용하는 경우 매우 편리합니다.파생 필드로 쉽게 쿼리 결과를 꾸밀 수 있는 것은 깔끔합니다. 및 할 수 DX가 단, API에서는 DX가 됩니다.apollo-client
대체할 수 없다 redux
왜냐하면 결국 두 도서관은 매우 다른 이유로 매우 다른 일을 하기 때문이다.
"Redux에서는 부작용으로부터 받은 응답을 기반으로 작업, 유형 및 디스패치 작업을 작성하고 리듀서를 사용하여 스토어의 데이터를 설정해야 합니다.이 작업은 Apollo Client가 자동으로 수행합니다."
부작용에 대해서는 레독스가 필수적이고 아폴로는 선언적이다.선언 코드는 일반적으로 라이브러리/프레임워크에 논리를 위임하기 때문에 더 짧습니다.
Daniel Rearden은 Redux와 Apollo 클라이언트 캐시를 비교하는 것은 사과와 오렌지와 같다고 좋은 지적을 했습니다.여기 사과와 오렌지는 다른 유형의 주, 특히 원격과 지역 주입니다.불행하게도, 레독스는 우리에게 모든 주를 동일하게 대하라고 장려한다.
서버에서 검색, 업데이트 및 변환이 필요한 상태에 대해서는 Apollo Cache를 활용합니다.프로펠러 드릴링, 글로벌 앱 상태, 비즈니스 로직용 후크(useReducer/useState 등)를 방지하기 위한 React의 Context API와 같은 가벼운 툴을 사용하고 싶습니다.
까다로운 부분은 원격 상태와 로컬/글로벌 앱 상태가 혼합되는 경우입니다.그래서 나는 그들이 어떻게 상호작용하는지에 대한 패턴을 정의하는 것에 주의할 것이다.
백엔드에서 graphql 호출이 가능한 경우에만 아폴로로의 마이그레이션이 가능합니다.프로젝트를 redx에서 아폴로로 이행하면 매우 좋은 결과를 얻을 수 있습니다.
이 블로그도 읽어보세요.이 블로그에서 이행을 결정했습니다.
언급URL : https://stackoverflow.com/questions/59891325/apollo-client-cache-vs-redux
'itsource' 카테고리의 다른 글
Swift에서 사전을 JSON으로 변환 (0) | 2023.02.10 |
---|---|
앵커 태그의 디폴트를 방지하는 방법 (0) | 2023.02.10 |
Oracle PL/SQL - 커스텀 SQLERM을 사용하여 사용자 정의 예외 발생 (0) | 2023.02.10 |
데이터 테이블에 빈 데이터 메시지를 표시하는 방법 (0) | 2023.02.10 |
json 형식의 키 값 쌍을 기호가 키로 있는 루비 해시로 변환하는 가장 좋은 방법은 무엇입니까? (0) | 2023.02.10 |