> 웹 프론트엔드 > 프런트엔드 Q&A > React의 상태는 무엇입니까? 클래스 및 기능 구성 요소에서 상태를 어떻게 관리합니까?

React의 상태는 무엇입니까? 클래스 및 기능 구성 요소에서 상태를 어떻게 관리합니까?

Emily Anne Brown
풀어 주다: 2025-03-19 13:35:34
원래의
106명이 탐색했습니다.

React의 상태는 무엇입니까? 클래스 및 기능 구성 요소에서 상태를 어떻게 관리합니까?

React의 상태는 구성 요소의 동작 및 렌더링을 제어하는 ​​데이터 또는 속성을 말합니다. 이들은 변이 가능하며 시간이 지남에 따라 변경 될 수 있으므로 리 렌즈가 사용자 인터페이스를 업데이트하도록 트리거합니다. 상태는 대화식 및 동적 웹 응용 프로그램을 만드는 데 중요합니다.

클래스 구성 요소의 상태 관리 :

클래스 구성 요소에서 상태는 this.state 객체를 사용하여 관리됩니다. 생성자의 상태를 초기화하고 this.setState() 사용하여 업데이트 할 수 있습니다. 예는 다음과 같습니다.

 <code class="javascript">class ExampleComponent extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } incrementCount = () => { this.setState({ count: this.state.count 1 }); }; render() { return ( <div> <p>Count: {this.state.count}</p> <button onclick="{this.incrementCount}">Increment</button> </div> ); } }</code>
로그인 후 복사

기능 구성 요소의 상태 관리 :

기능 구성 요소에서 상태는 React 16.8에 도입 된 useState 후크를 사용하여 관리됩니다. useState 후크를 사용하면 기능 구성 요소에 상태를 추가 할 수 있습니다. 사용 방법은 다음과 같습니다.

 <code class="javascript">import React, { useState } from 'react'; function ExampleComponent() { const [count, setCount] = useState(0); const incrementCount = () => { setCount(count 1); }; return ( <div> <p>Count: {count}</p> <button onclick="{incrementCount}">Increment</button> </div> ); }</code>
로그인 후 복사

이 예에서 useState 첫 번째 요소가 현재 상태 값 인 배열을 반환하고 두 번째 요소는 업데이트하는 함수입니다.

React에서 상태를 어떻게 업데이트 할 수 있으며, 클래스 구성 요소의 SetState와 기능 구성 요소의 Usestate 후크의 차이점은 무엇입니까?

상태 업데이트 :

  • 클래스 구성 요소 : this.setState() 사용하여 상태를 업데이트합니다. 객체 나 기능을 인수로 취할 수 있습니다. 객체를 사용할 때 반응은 객체를 현재 상태와 병합합니다. 함수를 사용하면 최신 상태에서 작업 할 수있게되며, 이는 비동기 상태 업데이트에 중요합니다.
  • 기능 구성 요소 : useState 가 반환 한 함수를 사용하여 상태를 업데이트합니다. 이 기능은 새로운 상태 값을 인수로 받아들이고 상태를 업데이트합니다.

setstate와 usestate의 차이점 :

  1. 구문 및 사용 :

    • setState 는 클래스 인스턴스의 메소드이며 이벤트 핸들러에서 사용하는 경우 바인딩해야합니다.
    • useState 배열 파괴로 사용할 수있는 배열을 반환하여보다 간결하고 간단하게 만듭니다.
  2. 비동기 성질 :

    • setStateuseState 에 의해 리턴 된 함수는 비동기입니다. 그러나 setState 상태가 업데이트 된 후 실행할 콜백 기능을 수락 할 수 있지만 useState 이 내장 메커니즘을 제공하지 않습니다. 일반적으로 기능 구성 요소의 상태 변경 후 useEffect 사용하여 부작용을 처리합니다.
  3. 병합 상태 :

    • setState 새 상태를 기존 상태와 병합하여 중첩 된 객체 또는 어레이를 업데이트하는 데 도움이됩니다.
    • useState setter 함수는 전체 상태 값을 대체합니다. setCount(prevCount => prevCount 1) 와 같은 기능 업데이트 양식을 사용하여 기능 구성 요소의 상태를 수동으로 병합해야합니다.

React Applications에서 복잡한 상태를 관리하기위한 모범 사례는 무엇이며 클래스 구성 요소의 수명주기 방법은 기능 구성 요소의 사용률과 어떻게 비교됩니까?

복잡한 상태 관리를위한 모범 사례 :

  1. 상태를 높이십시오 : 상태를 사용해야하는 구성 요소의 가장 가까운 공통 조상으로 상태를 이동하십시오. 이것은 상태 중앙에서 상태를 관리하고 소품을 통해 전달하는 데 도움이됩니다.
  2. Context API 사용 : 깊이 중첩 된 구성 요소의 경우 컨텍스트 API를 사용하여 소품 시추를 피하고 구성 요소 트리 전체에서 상태를보다 쉽게 ​​액세스 할 수 있도록하십시오.
  3. 주 관리 라이브러리 : 매우 복잡한 응용 프로그램의 경우 Redux 또는 Mobx와 같은 주 관리 라이브러리를 사용하여 글로벌 상태를 처리하십시오.
  4. 불변의 업데이트 : 항상 상태를 불변으로 취급하고 .map() , .filter() 및 스프레드 연산자와 같은 메소드를 사용하여 새로운 상태 객체를 만듭니다.
  5. 별도의 문제 : 대형 구성 요소를 더 작고 관리하기 쉬운 구성 요소로 분류하여 상태 논리를 명확하고 재사용 할 수 있습니다.

수명주기 방법 대 사용률 :

  • 클래스 구성 요소의 수명주기 방법 : 여기에는 componentDidMount , componentDidUpdatecomponentWillUnmount 포함됩니다. 데이터 가져 오기, 구독 설정 및 청소와 같은 부작용을 관리하는 데 사용됩니다.
  • 기능 구성 요소의 useEffect : useEffect 기능 구성 요소의 모든 수명주기 방법과 동등한 역할을합니다. 모든 렌더링 후, 첫 번째 렌더 후 또는 특정 종속성이 변경된시기에 실행될 수 있습니다. ComponentWillUnmount와 같은 동작을 처리하기 위해 정리 기능을 반환 할 수 있습니다.

useeffect의 예 :

 <code class="javascript">import React, { useState, useEffect } from 'react'; function ExampleComponent() { const [count, setCount] = useState(0); useEffect(() => { document.title = `Count: ${count}`; // Cleanup function return () => { document.title = 'React App'; }; }, [count]); return ( <div> <p>Count: {count}</p> <button onclick="{()"> setCount(count 1)}>Increment</button> </div> ); }</code>
로그인 후 복사

React의 상태 관리는 구성 요소 재 렌더링에 어떤 영향을 미치며, 클래스 및 기능 구성 요소 모두에서 성능을 최적화하는 데 어떤 기술을 사용할 수 있습니까?

재 렌더링에 대한 국가 관리의 영향 :

  • 상태 변경 : 상태가 구성 요소의 상태가 변경 될 때마다 RECT는 해당 구성 요소와 어린이를 재 렌더링합니다. 이를 통해 UI는 응용 프로그램의 데이터와 동기화 할 수 있습니다.
  • Thoughcomponentupdate 및 Memo : 클래스 구성 요소에서는 새로운 소품이나 상태가 시각적으로 변경되지 않으면 false 반환하여 불필요한 재 렌즈를 방지하기 위해 shouldComponentUpdate 사용하여 불필요한 재 렌즈를 방지 할 수 있습니다. 기능성 구성 요소에서 React.memo 유사한 목적을 제공하여 소품이 변경되지 않은 경우 리 렌즈를 방지합니다.

최적화 기술 :

  1. 순수한 구성 요소 : 클래스 구성 요소에는 React.PureComponent 사용하십시오. 그것은 얕은 소품과 상태 비교로 shouldComponentUpdate 구현합니다.
  2. REACT.MEMO : 불필요한 재 렌즈를 방지하여 소품이 동일하다면 기능적 구성 요소를 React.memo 로 마무리하십시오.
  3. USECALLBACK 및 USEMEMO : 기능 구성 요소에서 useCallback 사용하여 콜백 함수와 useMemo 메모하여 계산 된 값을 메모하여 불필요한 재 계산을 방지합니다.
  4. 키 소품 : 렌더링 목록이있을 때 key 소품을 사용하여 응답 한 항목이 변경되었거나 추가되었거나 제거되었는지 식별하십시오.
  5. 코드 분할 및 게으른 하중 : 부품이 필요할 때만 부품을로드하여 초기 번들 크기를 줄이고로드 시간을 개선하기 위해 React.lazy and Suspense 사용하십시오.
  6. 가상화 : 대형 목록을 렌더링하려면 react-window 또는 react-virtualized 와 같은 가상화 라이브러리를 사용하여 눈에 보이는 항목 만 렌더링하십시오.

메모 및 USECALLBACK을 통한 최적화의 예 :

 <code class="javascript">import React, { useState, useCallback } from 'react'; const ChildComponent = React.memo(function ChildComponent({ onClick }) { console.log('ChildComponent rendered'); return <button onclick="{onClick}">Click me</button>; }); function ParentComponent() { const [count, setCount] = useState(0); const handleClick = useCallback(() => { setCount(count 1); }, [count]); return ( <div> <p>Count: {count}</p> <childcomponent onclick="{handleClick}"></childcomponent> </div> ); }</code>
로그인 후 복사

이 예에서는 ChildComponent React.memouseCallback 덕분에 onClick 변경되는 경우에만 다시 렌더링됩니다.

위 내용은 React의 상태는 무엇입니까? 클래스 및 기능 구성 요소에서 상태를 어떻게 관리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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