> 웹 프론트엔드 > JS 튜토리얼 > React Native의 국가 관리

React Native의 국가 관리

尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2025-02-14 10:23:12
원래의
697명이 탐색했습니다.

State Management in React Native

코어 포인트

React Native의 상태는 시간이 지남에 따라 카운터 애플리케이션의 카운터 또는 할 일 목록과 같은 할 일 목록과 같은 모든 것을 말합니다. React의

메소드, 컨텍스트 API 및 최근에 도입 된 후크를 포함한 다양한 방법을 사용하여 관리됩니다.
    Context API는 각 층에서 소품을 수동으로 전달하지 않고 구성 요소 트리에서 데이터를 전달하는 방법을 제공하므로 소위 "소품 드릴링"문제를 피합니다. 구성 요소간에 데이터를 직접 전송할 수 있습니다.
  • 반응 후크는 React v16.8에 도입되어 상태가 반응하는 방식을 단순화했습니다. 함수 구성 요소에서 상태를 사용하고 코드 줄 수를 줄이며 코드를 쉽게 읽을 수 있습니다. setState() 상태를 상위 구성 요소로 높이면 구성 요소를 통해 상태를 공유 할 수 있습니다. 이 관행은 항상 간단한 것은 아니지만 React에서 일반적이며 부모 구성 요소가 큰 상태 대상이되는 것을 방지하는 데 도움이됩니다.
  • 주 경영진은이를 구현할 수있는 여러 가지 방법이 있기 때문에 React Native를 학습하는 데 가장 어려운 개념 중 하나입니다. NPM 레지스트리에는 Redux와 같은 수많은 주 관리 라이브러리가 있으며 다른 주 관리 라이브러리를 기반으로 한 수많은 라이브러리가 있으며 Redux Easy와 같은 원래 라이브러리 자체를 단순화합니다. 새로운 주 관리 도서관은 매주 RECT에 도입되지만 RECT가 도입 된 이후, 응용 프로그램 상태 유지의 기본 개념은 동일하게 유지됩니다.
  • React Native에서 상태를 설정하는 가장 일반적인 방법은 React의 메소드를 사용하는 것입니다. 또한 컨텍스트 API를 사용하여 소품 시추를 피하고 트리의 개별 하위 구성 요소에게 전달하지 않고 다층 상태를 아래로 전달할 수 있습니다. 최근에, 후크는 React V16.8.0에 나타났습니다. React Native는 V0.59에서 가져 왔습니다.
  • 이 튜토리얼에서는 상태가 실제로 무엇을 의미하는지,
  • 메소드, 컨텍스트 API 및 반응 후크를 배울 것입니다. 이것은 React Native에서 상태를 설정하기위한 기초입니다. 모든 라이브러리는 위의 기본 개념을 기반으로 구축됩니다. 따라서 이러한 개념을 이해하면 라이브러리를 이해하거나 자신의 주 관리 라이브러리를 쉽게 만들 수 있습니다.
처음부터 React Native를 배우고 싶습니까? 이 기사는 Advanced Library에서 발췌 한 것입니다. 기본, 프로젝트, 팁 및 도구를 다루는 완전한 React Native Book Collection을 위해 Sitepoint Premium에 가입하십시오.

상태 란?

시간이 지남에 따라 변하는 것을 상태라고합니다. 카운터 응용 프로그램이 있으면 상태가 카운터 자체입니다. 할 일 앱이 있으면 시간이 지남에 따라 할 일 목록이 변경 되므로이 목록은 상태가됩니다. 입력 요소조차도 사용자가 입력 할 때 시간이 지남에 따라 변경되므로 어떤 의미에서 상태입니다. setState()

SetState 소개

이제 우리는 상태가 무엇인지 알았으므로 React가 어떻게 저장하는지 이해합시다.

간단한 카운터 애플리케이션을 고려하십시오 :

이 응용 프로그램에서는 상태를 생성자의 객체 내에 저장하고 에 할당합니다.

상태는 하나의 물체 일 수 있습니다. 직접 숫자를 저장할 수 없습니다. 이것이 바로 우리가 객체 내부에

변수를 만드는 이유입니다.
import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = {
    counter: 0,
  };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState({ counter: counter + 1 })} />
        <Button title="Decrement" onPress={() => this.setState({ counter: counter - 1 })} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
<🎜 🎜> <🎜 🎜> 메소드에서 <🎜 🎜> 속성을 ​​해체하고 <🎜 🎜> 내에서 렌더링합니다. 현재는 정적 값 만 표시됩니다 (0).

당신은 또한 다음과 같이 생성자 외부의 상태를 쓸 수 있습니다 : this.state.

이제 우리는 ""및 "-"버튼이 작동하기를 원한다고 가정합니다. 우리는 각자의

핸들러 안에 일부 코드를 작성해야합니다. counter 이제 ""및 "-"버튼을 클릭하면 재 렌즈를 구성 요소에 반응합니다. <<<> 메소드가 사용되기 때문입니다.

<🎜 🎜>

메소드는 변경된 트리의 일부를 다시 렌더링합니다. 이 경우 렌더 render를 다시 렌더링합니다. this.state 그래서 우리가 클릭하면 "카운터를 1 씩 증가시킵니다. "-"를 클릭하면 카운터가 1으로 줄어 듭니다. counter <h1>를 변경함으로써 직접 상태를 변경할 수 없다는 것을 기억하십시오.

또한, 상태 변경은 비동기 작업입니다. 즉, <🎜 🎜>를 호출 한 직후에

를 읽으면 최신 변경 사항을 반영하지 않습니다.

여기서, 우리는 아래 그림과 같이 "콜백"구문을 사용합니다.
import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = { counter: 0 };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState({ counter: counter + 1 })} />
        <Button title="Decrement" onPress={() => this.setState({ counter: counter - 1 })} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
"콜백으로 함수"구문은 <🎜

메소드의 매개 변수로 최신 상태 - <🎜 🎜>를 제공합니다. onPress <,> 이런 식으로, 우리는 국가에 대한 최신 변경을 얻을 수 있습니다.

import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = { counter: 0 };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState(prevState => ({ counter: prevState.counter + 1 }))} />
        <Button title="Decrement" onPress={() => this.setState(prevState => ({ counter: prevState.counter - 1 }))} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
<<> 고리 란 무엇입니까?

<<> 후크는 React v16.8의 새로운 기능입니다. 이전에는 클래스 구성 요소를 만들어 상태 만 사용할 수 있습니다. 함수 구성 요소 자체에서 상태를 사용할 수 없습니다. setState() 후크를 추가하면 기능 구성 요소 자체에서 상태를 사용할 수 있습니다.

위의

클래스 구성 요소를 setState() 기능 구성 요소로 변환하고 반응 후크를 사용하겠습니다. <h1> 는 클래스 구성 요소의 코드 줄 수를 18에서 12 줄로 줄였습니다. 또한 코드를 읽기 쉽습니다.

위의 코드를 검토합시다. 먼저, 우리는 React의 내장

메소드를 사용합니다.

<🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 #>와 같은 숫자, 문자열, 배열, 부울, 객체 또는 모든 유형의 데이터와 같은 모든 유형 일 수 있습니다.

카운터 예제에서는 숫자가 필요하고 두 값이 포함 된 배열을 반환합니다.

의 첫 번째 값은 배열의 첫 번째 값은 현재 상태 값입니다. 따라서 는 현재 0입니다.

배열의 두 번째 값은 상태 값을 업데이트 할 수있는 함수입니다.

counter에서 <🎜 🎜>에서

를 사용하여

를 직접 업데이트 할 수 있습니다.

따라서, 우리의 증분 함수는

가되고 우리의 감소 함수는 onPress가됩니다. setCounter reft에는 <🎜 🎜>, counter, <🎜 🎜>,

,

, <🎜 🎜>, <🎜 🎜>, setCounter(counter 1), setCounter(counter - 1), <🎜와 같은 많은 내장 후크가 있습니다. >, <,>,

,

useState —— React Hooks 문서에서 자세한 정보를 찾을 수 있습니다. useEffect 또한, 우리는 우리 자신의 커스텀 후크를 만들 수 있습니다. useContext 후크를 구축하거나 사용할 때 두 가지 규칙을 따라야합니다. useReducer 최상위 레벨 만 호출. 루프, 조건 또는 중첩 된 기능 내에서 고리를 호출하지 마십시오. 대신, 항상 최상층 반응 기능에서 후크를 사용하십시오. 이 규칙에 따라 구성 요소가 렌더링 될 때마다 후크가 동일한 순서로 호출되도록 할 수 있습니다. 그렇기 때문에 RECT가 다중 useCallbackuseMemo 호출 사이에 후크 상태를 올바르게 유지하는 이유입니다. useRef 반응 기능 만 호출합니다. 일반 JavaScript 기능에서 후크를 호출하지 마십시오. 대신, 반응 기능 구성 요소 또는 사용자 정의 후크에서 후크를 호출 할 수 있습니다. useImperativeHandle useLayoutEffect 이 규칙을 따르면 구성 요소의 모든 상태의 논리가 소스 코드에서 명확하게 표시되도록 할 수 있습니다. useDebugValue 후크는 이해하기 쉽고 기능 구성 요소에 상태를 추가 할 때 유용합니다.

<<> 컨텍스트 api

<🎜 🎜>
컨텍스트는 각 레이어에서 소품을 수동으로 전달하지 않고 구성 요소 트리에서 데이터를 전달하는 방법을 제공합니다.

일반적인 반응 기본 응용 프로그램에서 데이터는 소품을 통해 위에서 아래로 전달됩니다. React 응용 프로그램에 여러 구성 요소 레벨이 있고 구성 요소 트리의 마지막 자식 구성 요소가 최상위 상위 구성 요소에서 데이터를 검색하려는 경우 소품을 개별적으로 전달해야합니다.

다음 예를 고려하십시오. 우리는 <🎜 🎜> 구성 요소에서
    구성 요소로
  1. 의 값을 전달하려고합니다. 일반적으로 컨텍스트를 사용하지 않으면 각 중간 레벨을 통과합니다. useState useEffect
  2. 는 앱에서 전달됩니다 -& gt; 위의 문제를 소품 시추라고합니다.
  3. 이것은 간단한 예이지만 수십 가지 수준의 실제 응용 프로그램을 고려하십시오.
  4. 마지막 아동 구성 요소에서 데이터를 사용하기 위해 각 어린이 구성 요소를 통해 데이터를 전달하는 것이 어려워집니다. 그래서 우리는 맥락이 있습니다.
컨텍스트를 통해 우리는 앱에서 직접 데이터를 전달할 수 있습니다.

다음은 컨텍스트 API를 사용하는 방법입니다.

먼저,

api를 사용하여
import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = {
    counter: 0,
  };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState({ counter: counter + 1 })} />
        <Button title="Decrement" onPress={() => this.setState({ counter: counter - 1 })} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
를 생성합니다. 를 기본값으로 설정했습니다.

그런 다음 React.createContext를 사용하여 <🎜 🎜>를 소품으로 제공 할 때 ThemeContext 구성 요소의 루트 요소를 <🎜 🎜>로 랩핑합니다. light 마지막으로,

값을 얻기 위해 렌더링 소품으로

를 사용합니다. theme 렌더링 소품 모드는 양호하지만 여러 컨텍스트가 있으면 콜백 지옥을 유발할 수 있습니다. 콜백 지옥을 피하기 위해 우리는 ThemeContext.Provider 대신 후크를 사용할 수 있습니다. App 우리가 변경해야 할 유일한 것은

구성 요소 구현 세부 사항입니다.

이런 식으로, 우리는 콜백 지옥에 대해 걱정할 필요가 없습니다. ThemeContext.Consumer theme <<> 구성 요소를 가로 질러 공유 상태 dark <🎜 🎜> 지금까지 우리는 구성 요소 자체에서 상태 만 관리했습니다. 이제 구성 요소 간 상태를 관리하는 방법을 이해할 것입니다.

우리가 아래와 같이 간단한해야 할 일 목록 응용 프로그램을 작성한다고 가정 해 봅시다 :

ThemeContext.Consumer 이제 <🎜 🎜> 구성 요소에서 할 일을 추가하려면 <🎜 🎜> 구성 요소의

소품에 어떻게 표시됩니까? 대답은 "높은 상태"입니다.

두 형제 구성 요소가 상태를 공유하려면 부모 구성 요소로 홍보해야합니다. 완전한 예는 다음과 같아야합니다 : Profile

여기서, 우리는
import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = { counter: 0 };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState({ counter: counter + 1 })} />
        <Button title="Decrement" onPress={() => this.setState({ counter: counter - 1 })} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
구성 요소에 상태를 저장합니다. 우리는 반응 후크 를 사용하여

를 빈 배열로 저장합니다.

그런 다음 <🎜 🎜> 메소드를 <🎜 🎜> 구성 요소로 전달하고 <🎜 🎜> 배열을 <🎜 🎜> 구성 요소로 전달합니다.
요소를 가지고 있으며,이 요소는 <🎜

의 변경 값을 추적하기 위해 React hook

를 사용합니다.

버튼을 누른 후, 우리는 부모 <🎜 🎜>에서 전달 된

메소드를 호출합니다. 이를 통해 할 일 항목이
import React from 'react';
import { Text, Button } from 'react-native';

class Counter extends React.Component {
  state = { counter: 0 };

  render() {
    const { counter } = this.state;
    return (
      <>
        <Text>{counter}</Text>
        <Button title="Increment" onPress={() => this.setState(prevState => ({ counter: prevState.counter + 1 }))} />
        <Button title="Decrement" onPress={() => this.setState(prevState => ({ counter: prevState.counter - 1 }))} />
      </>
    );
  }
}
로그인 후 복사
로그인 후 복사
목록에 추가되도록합니다. 나중에 상자를 지울 것입니다.

AddTodo 구성 요소는 TodoList를 받고 목록에 참석합니다. todos 당신은 또한 자신을 개선하기 위해 할 일 항목을 삭제하려고 시도 할 수 있습니다. 다음은 해결책입니다 :

이것은 React에서 가장 일반적인 관행입니다. 개선은 그다지 간단하지 않습니다. 이것은 간단한 예이지만 실제 응용 프로그램에서는 형제 구성 요소에 사용하기 위해 어떤 상태를 부모에게 홍보 해야하는지 모릅니다. 따라서, 먼저, 상태는 구성 요소 자체에 보관되며, 구성 요소간에 상태를 공유해야 할 때 상황이 발생할 때만 상태가 부모에게 홍보됩니다.

이런 식으로, 당신은 부모 구성 요소를 큰 상태 객체로 만들지 않습니다.

결론

대체로, 우리는 국가가 무엇인지, 그리고 반응이 제공 한 api를 사용하여 상태 값을 설정하는 방법을 이해합니다. 또한 반응 후크에 대해 배웁니다. 이는 클래스 구성 요소로 변환하지 않고 기능 구성 요소에 상태를 쉽게 추가 할 수 있습니다. 우리는 새로운 컨텍스트 API와 그 후크 버전을 배웠으며, 이는 소품 콜백 지옥을 피하는 데 도움이되었습니다.

마지막으로, 우리는 형제 구성 요소들 사이에서 상태를 공유하기 위해 상태를 개선하는 방법을 배웠습니다.

이러한 핵심 개념을 이해하면 React가 매우 간단 해집니다. 주 상태를 가능한 한 많은 구성 요소에 유지해야합니다. 소품 드릴링이 문제가되는 경우에만 컨텍스트 API를 사용하십시오. 필요한 경우에만 상태를 홍보하십시오. setState() 마지막으로, 응용 프로그램이 복잡 해지고 상태 변경을 디버깅하기가 어려워지면 Redux 및 Mobx와 같은 상태 관리 라이브러리를 확인하십시오.

반응에 대한 FAQS 기본 국가 관리 useContext에 대한 FAQ React Native의 국가 관리 란 무엇입니까? React Native의 상태 관리는 React Native 응용 프로그램에서 상태의 관리 및 처리 (데이터 및 UI 논리)를 말합니다. 여기에는 응용 프로그램의 다른 구성 요소에서 상태를 효율적으로 업데이트하고 동기화하는 것이 포함됩니다.

주정부 관리가 반응 네이티브 개발에서 중요한 이유는 무엇입니까? 상태 관리는 애플리케이션의 동적 데이터 및 사용자 인터페이스를 유지하고 업데이트하기 때문에 기본적으로 반응하는 데 중요합니다. 응용 프로그램의 일부의 변경 사항이 다른 부분에 정확하게 반영되어 원활하고 반응이 좋은 사용자 경험을 제공합니다.

React Native에서 상태를 관리하는 다른 방법은 무엇입니까? React Native는 로컬 구성 요소 상태, React Hooks (), Redux, Mobx 및 Context API를 포함한 다양한 상태 관리 방법을 제공합니다. 선택은 응용 프로그램의 복잡성 및 특정 요구 사항에 따라 다릅니다.

Redux 또는 Mobx와 같은 글로벌 주 관리 솔루션과 함께 로컬 구성 요소 상태를 언제 사용해야합니까? 구성 요소 내의 간단한 지역 상태 관리의 경우 로컬 구성 요소 상태를 사용하십시오. 여러 구성 요소 중 상태를 공유하는 복잡한 응용 분야의 경우 Redux 또는 Mobx와 같은 글로벌 상태 관리 솔루션을 사용하여 중앙 집중식 상태로 쉽게 액세스 할 수있는 상태를 유지하십시오.

컨텍스트 API는 어떻게 React Native의 상태 관리를 촉진합니까? 컨텍스트 API는 부품이 구성 요소 트리를 통해 소품을 명시 적으로 전달하지 않고 상태를 공유 할 수있는 React의 기능입니다. Redux와 같은 추가 라이브러리가 필요없이 글로벌 상태를 관리하는 데 유용합니다.

이 개정 된 출력은 원래 이미지 위치와 형식을 유지하고, 핵심 의미를 보존하면서 독창성을 위해 텍스트를 다시 제출하고, 프롬프트의 요구 사항을 다룹니다.

.

위 내용은 React Native의 국가 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

구성 요소는 메소드를 소품으로 수신합니다. 이 방법은 버튼을 누른 후 호출해야합니다. 우리는 또한

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿