> 웹 프론트엔드 > 프런트엔드 Q&A > GetDerivedStateFromProps () 란 무엇입니까?

GetDerivedStateFromProps () 란 무엇입니까?

Karen Carpenter
풀어 주다: 2025-03-19 13:44:31
원래의
434명이 탐색했습니다.

GetDerivedStateFromProps () 란 무엇입니까?

getDerivedStateFromProps 는 React의 정적 수명주기 방법으로 소품 변경에 따라 구성 요소의 상태를 업데이트 할 수 있습니다. 구성 요소가 새로운 소품을받을 때 렌더링 프로세스 직전에 호출됩니다. 이 메소드는 nextPropsprevState 두 매개 변수를 가져 오며 상태 또는 null 을 업데이트하여 상태 변경이 필요하지 않음을 나타내는 객체를 반환해야합니다. 사용되지 않은 componentWillReceiveProps 수명주기 방법을 대체하고 소품 변경에 반응하고 구성 요소의 상태를 그에 따라 업데이트 해야하는 시나리오를 처리하는 데 사용됩니다.

다음은 사용 방법에 대한 간단한 예입니다.

 <code class="jsx">class ExampleComponent extends React.Component { static getDerivedStateFromProps(nextProps, prevState) { if (nextProps.someProp !== prevState.someProp) { return { someProp: nextProps.someProp }; } return null; } constructor(props) { super(props); this.state = { someProp: props.someProp, }; } render() { return <div>{this.state.someProp}</div>; } }</code>
로그인 후 복사

언제 react에서 getDerivedStateFromProps ()를 사용해야합니까?

getDerivedStateFromProps 구성 요소의 소품 변경에 응답하여 구성 요소의 상태를 업데이트 해야하는 특정 시나리오에서 사용해야합니다. 일부 일반적인 사용 사례는 다음과 같습니다.

  1. 재설정 상태 : 소품 변경이 재설정 조치를 나타내는 경우이 방법을 사용하여 상태의 일부를 재설정 할 수 있습니다.
  2. 소품에서 유래 한 상태 : 구성 요소의 상태를 항상 소품에서 계산 해야하는 경우 getDerivedStateFromProps 사용하여 새로운 소품 값을 기반으로 상태를 업데이트 할 수 있습니다.
  3. 비동기 업데이트 처리 : 비동기 데이터로드를 처리 할 때이 방법을 사용하여 새 소품이 도착하면 상태가 업데이트 될 수 있습니다.

예를 들어, 양식이 '재설정'상태에 있는지 여부를 나타내는 양식 구성 요소를 구축하는 경우 '재설정'소품이 true로 설정 될 때 getDerivedStateFromProps 사용하여 양식의 내부 상태를 재설정 할 수 있습니다.

 <code class="jsx">class FormComponent extends React.Component { static getDerivedStateFromProps(nextProps, prevState) { if (nextProps.resetForm && nextProps.resetForm !== prevState.resetForm) { return { formData: {}, resetForm: nextProps.resetForm, }; } return null; } constructor(props) { super(props); this.state = { formData: {}, resetForm: props.resetForm, }; } render() { return <form>{/* form elements */}</form>; } }</code>
로그인 후 복사

GetDerivedStateFrops ()가 구성 요소 성능에 어떤 영향을 미칩니 까?

getDerivedStateFromProps 의 사용은 구성 요소 성능에 긍정적 인 영향을 미칠 수 있습니다.

긍정적 인 영향 :

  • 동기 업데이트 : getDerivedStateFromProps 렌더링하기 전에 동기식으로 실행되므로 구성 요소 재 렌즈 전에 상태가 업데이트되도록하여 불필요한 재 렌즈를 피할 수 있습니다.
  • 상태 업데이트 최적화 : 필요한 경우 상태를 업데이트하면 (업데이트가 필요하지 않은 경우 null 리턴) 불필요한 상태 업데이트를 피할 수 있습니다.

부정적인 영향 :

  • 추가 계산 : 구성 요소가 새 소품을받을 때마다 getDerivedStateFromProps 호출되어 특히 메소드 내의 논리가 복잡한 경우 추가 계산 간접비로 이어질 수 있습니다.
  • 무한 루프의 가능성 : 주의 깊게 구현되지 않으면 상태가 추가 된 소품 업데이트를 트리거하여 더 많은 상태 업데이트가 트리거되면 getDerivedStateFromProps 무한 루프로 이어질 수 있습니다.

성능 문제를 완화하려면 getDerivedStateFromProps 내부의 논리를 가능한 한 간단하고 효율적으로 유지하고 필요한 경우에만 상태 업데이트가 이루어 지도록하는 것이 중요합니다.

getDerivedStateFromProps ()를 사용할 때 피해야 할 일반적인 함정은 무엇입니까?

getDerivedStateFromProps 사용할 때는 알고있는 몇 가지 일반적인 함정이 있습니다.

  1. 무한 루프 : 무한 업데이트 루프 생성에주의하십시오. 예를 들어, 상태를 업데이트하면 소품이 변경되는 재 렌더가 발생하면 상태가 다시 변경되면 끝없는주기가 될 수 있습니다. 항상 getDerivedStateFromProps 필요한 경우 상태 만 업데이트해야합니다.
  2. 남용 : 모든 소품 변경에 대해 getDerivedStateFromProps 사용하지 마십시오. 국가가 소품에서 파생되어야하는 시나리오에만 사용해야합니다. 다른 상태 업데이트의 경우 이벤트 핸들러 또는 다른 수명주기 방법과 같은 다른 방법을 사용하십시오.
  3. 잘못된 상태 관리 : 초기 상태 설정에 getDerivedStateFromProps 사용하지 마십시오. 생성자는 초기 상태를 설정하기에 더 나은 장소입니다. 초기 렌더링 후 소품 변경을 기반으로 상태를 업데이트하기 위해 getDerivedStateFromProps 사용하십시오.
  4. prevState 무시 : 항상 nextPropsprevState 비교하여 상태를 불필요하게 업데이트하지 않도록하십시오. 이는 불필요한 재 렌즈를 방지하고 성능을 향상시키는 데 도움이 될 수 있습니다.
  5. 복잡성 : 내부의 논리를 간단하게 유지 getDerivedStateFromProps . 복잡한 논리는 성능 문제로 이어지고 구성 요소를 이해하고 유지하기가 더 어려워 질 수 있습니다.

다음은 피해야 할 일반적인 함정의 예입니다.

 <code class="jsx">class BadExample extends React.Component { static getDerivedStateFromProps(nextProps, prevState) { // This will cause an infinite loop because it's not comparing nextProps with prevState return { someProp: nextProps.someProp }; } render() { return <div>{this.state.someProp}</div>; } }</code>
로그인 후 복사

이러한 함정을 인식하고 getDerivedStateFromProps 신중하게 구현 함으로써이 수명주기 방법을 효과적으로 사용하여 React 구성 요소의 PROP 변경을 기반으로 상태를 관리 할 수 ​​있습니다.

위 내용은 GetDerivedStateFromProps () 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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