소개: React Native의 상태 관리 Matters

State Management는 상호 작용하는 React Native 애플리케이션의 백본입니다. 직접 앱의 응답성, 디버깅성 및 유지성에 영향을 미치는 데이터를 저장하고 업데이트하고 공유하는 방법. Poorly 관리된 상태는 stale UI, unpredictable bugs 및 sluggish development cycle에 이르게 됩니다. 앱이 실시간 데이터, 오프라인 기능 및 여러 사용자 역할과 복잡한 시스템에 여러 개의 화면에서 성장함에 따라, 솔리드 스테이트 관리는 비-negoti-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t

React Native의 주관

React Native의 상태는 사용자가 볼 때 시간과 영향을 줄 수 있는 데이터가 나타납니다. 이 범위는 정통 사용자 프로필 또는 fetched 제품의 목록으로 toggle 버튼의 on/off 상태에서 다를 수 있습니다. Broadly는 두 가지 범주로 분류될 수 있습니다.

  • Local (component) state – 단일 구성 요소 또는 작은 클러스터의 구성 요소가 필요합니다. 예: 입력, modal 가시성, 애니메이션 진행을 형성합니다.
  • Global(shared) state – 앱의 다양한 관련 구성 요소가 접근할 수 있는 데이터. 예: 현재 사용자, 쇼핑 카트, 테마 선호도, 알림 카운트.

의 각 조각을 저장하는 방법 및 방법 국가 관리의 본질은. 목표는 데이터 흐름 예측을 유지하고, 불필요한 렌더링을 피하고, 추적하기 쉬운 상태 변경을 만듭니다.

국가 관리를위한 모범 사례

1. Local State: 과 ]로 시작

React의 내장된 후크는 첫 번째 및 종종 최고의 도구입니다. useState]은 예를 들어, 체크박스 또는 텍스트 입력을 위한 단순하고 독립적 인 조각에 이상적입니다. 상태 논리가 더 복잡해질 때 (다중 관련 값, 과도한 업데이트), useReducer)로 전환합니다. 이 작업을 통해 예측 가능한 업데이트는 흡진기와 같은 단일 구성 요소로 전환할 수 있습니다. 이 작업을 통해, 이 작업을 다시 시작하면, 이 작업을 다시 시작할 수 있습니다.

2. 상승 국가 필요 때만

이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.

3. Context API (]])를 중간 Scale 공유에 사용

프로 드릴링은 5 개 이상의 레이어를 통해 고통스러운 추적 props가 될 때, React의 Context API는 깨끗한 탈출을 제공합니다. 상태 객체와 파견 기능을 보유하는 컨텍스트를 만듭니다. useReducer]를 사용하여 업데이트 논리를 집중하십시오. 이 패턴은 중간 크기의 앱에 적합합니다: 테마, 로컬, 인증 상태, 또는 기능 플래그. 주의해야 합니다: 모든 소비자는 React의 값(FLT:1])을 정의할 때, (FLT:3)을 분리할 때, (FLT:3)는 (FLT:3)을 구분합니다.

4. 대용량 앱을 위한 State Management Library를 채택

앱이 수십 개의 화면, 많은 비동기 데이터 흐름 및 복잡한 비즈니스 규칙에 도달하면 강력한 라이브러리가 필수적입니다. React Native 생태계의 가장 전투 테스트 옵션은 다음과 같습니다.

팀의 친숙성 및 앱의 특정 요구에 따라 선택하십시오. 대부분의 새로운 프로젝트를 위해 Redux Toolkit] 또는 Zustand]는 우수한 시작점입니다. 효스터 년의 원료 Redux 보일 러 플레이트를 피하십시오. 항상 툴킷을 사용합니다.

5. Dedicated Tools를 사용하여 비동기 상태를 관리

Server-fetched data (API 호출, GraphQL, Firebase)는 자체 치료가 될 수 있습니다. 동일한 글로벌 저장소에서 UI state를 가진 서버를 섞지 마십시오. TanStack Query (React Query)]와 SWR 핸들 캐싱, 디듀케이드, 배경 정제, LTLT: LT:2] 의 기본 설정은 다음과 같습니다. ]

6. 부적절한 상태

많은 React Native 앱은 앱 재시작을 살아야 합니다. 사용자 선호도, 인증 토큰, 초안 데이터. 로컬 저장소에 대한 중요한 슬라이스를 주장합니다. AsyncStorage를 사용하여 간단한 키 값의 필요성을 고려하지만 ]react-native-mm[kv를 사용하여 더 큰 데이터셋에 고성능을 제공합니다. ]]]]]]]]]]

7. Optimize 성과: Memoization와 선별기

과도한 렌더링은 React Native의 성능 문제의 주요 원인입니다. 이러한 규칙을 따르십시오.

  • React.memo를 사용하여 동일한 props를 자주 받는 부품에 대해 사용합니다.
  • 과 를 사용하여 객체와 함수 참조를 props로 안정화시킵니다.
  • Redux 또는 유사한 라이브러리를 사용할 때 항상 memoized selectors (예를 들어, )와 함께 최소 데이터 슬라이스를 선택합니다. 저장소 변경의 관련 부품이 없을 때 렌더링에서 구성 요소를 방지합니다.
  • Context-heavy 설정에 대한, 분할 제공 업체는 업데이트에 관련된 하위 트리 렌더링 만.

React DevTools 및 Metro의 성능 모니터링을 사용하여 앱을 프로필로 하여 핫스팟을 식별합니다. 종종 단일 놓인 ]을 컨텍스트 값으로 변경하면 전체 화면을 느리게 할 수 있습니다.

8. 당신의 국가 논리를 시험하십시오

State Management logic은 전체 구성 요소 트리를 장착하지 않고 격리에서 테스트 할 수 있어야한다. Redux의 경우, Jest]을 사용하여 흡진기 및 행동 제작자에 대한 단위 테스트를 작성합니다. Zustand의 경우, getters 및 setters를 호출하여 상점을 직접 테스트합니다. Context + useReducer를 위해, 흡진기 기능을 추출하고 순수한 기능을 테스트하십시오. 이것은 당신이 국가 전환 작업이 제대로 작동 할 수 있다는 것을 확신합니다. 특히, 특정 조건을 처리 할 수 있습니다 ].

추가 팁

  • Keep state 최소: 가능한 한 (예를 들어, 저장 대신 항목 배열에서 전체 가격을 계산).
  • Immutability는 key: 항상 새로운 객체/라이즈를 반환합니다. 스프레드 연산자를 사용, ]/, 또는 뮤테이션 버그를 방지하기 위해 Immer와 같은 라이브러리.
  • ]미들웨어 부작용: Redux의 경우, 또는 Redux Saga/Thunk를 사용하십시오. Zustand의 경우, 단순 저장소 핸들 사이드 효과에 대한 기능도 깨끗하게 처리됩니다.
  • Cache selectively: React Query 또는 SWR를 서버 상태 캐싱에 사용하세요. 오프라인과 동기화를 수정할 필요가 없는 로컬 저장소에서 서버 데이터를 복제하지 마십시오.
  • Regularly refactor: 앱이 진화함에 따라, 당신의 상태 아키텍처를 재시동합니다. 프로 드릴링이 메시가 될 때 로컬 상태 또는 라이브러리로 이동하십시오. 사용하지 않은 상태 슬라이스를 제거하십시오.

관련 기사

React Native의 효과적인 상태 관리는 단일 규정식 아키텍처를 따르지 않습니다. 각 유형의 상태에 적합한 도구를 선택하고 데이터 흐름 예측을 유지하는 것이 좋습니다. 과 과 간단한 시작하십시오. 중간 공유를 위해 Context에 스케일을 두고, Redux Toolkit 또는 Zustand와 같은 라이브러리를 채택하면 앱의 복잡성가 중앙화되고, 부유 한 상점이 필요합니다. 항상 개인화된 fetching 도구를 사용하여 클라이언트 상태에서 서버 상태를 분리하십시오. 그리고 거의 경로를 선택하지 않고 테스트할 수 없습니다.

이 최고의 관행을 개발 워크플로우로 짜서, 반응, 유지, 유지, 그리고 그들이 수천 개의 코드로 성장하면서도 일할 수있는 즐거움을 유지할 수 있습니다. 키는 일류 시민으로 국가를 치료하는 것입니다. 후속.