getDerivedStateFromProps
는 React의 정적 수명주기 방법으로 소품 변경에 따라 구성 요소의 상태를 업데이트 할 수 있습니다. 구성 요소가 새로운 소품을받을 때 렌더링 프로세스 직전에 호출됩니다. 이 메소드는 nextProps
와 prevState
두 매개 변수를 가져 오며 상태 또는 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>
getDerivedStateFromProps
구성 요소의 소품 변경에 응답하여 구성 요소의 상태를 업데이트 해야하는 특정 시나리오에서 사용해야합니다. 일부 일반적인 사용 사례는 다음과 같습니다.
getDerivedStateFromProps
사용하여 새로운 소품 값을 기반으로 상태를 업데이트 할 수 있습니다. 예를 들어, 양식이 '재설정'상태에 있는지 여부를 나타내는 양식 구성 요소를 구축하는 경우 '재설정'소품이 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>
getDerivedStateFromProps
의 사용은 구성 요소 성능에 긍정적 인 영향을 미칠 수 있습니다.
긍정적 인 영향 :
getDerivedStateFromProps
렌더링하기 전에 동기식으로 실행되므로 구성 요소 재 렌즈 전에 상태가 업데이트되도록하여 불필요한 재 렌즈를 피할 수 있습니다.null
리턴) 불필요한 상태 업데이트를 피할 수 있습니다.부정적인 영향 :
getDerivedStateFromProps
호출되어 특히 메소드 내의 논리가 복잡한 경우 추가 계산 간접비로 이어질 수 있습니다.getDerivedStateFromProps
무한 루프로 이어질 수 있습니다. 성능 문제를 완화하려면 getDerivedStateFromProps
내부의 논리를 가능한 한 간단하고 효율적으로 유지하고 필요한 경우에만 상태 업데이트가 이루어 지도록하는 것이 중요합니다.
getDerivedStateFromProps
사용할 때는 알고있는 몇 가지 일반적인 함정이 있습니다.
getDerivedStateFromProps
필요한 경우 상태 만 업데이트해야합니다.getDerivedStateFromProps
사용하지 마십시오. 국가가 소품에서 파생되어야하는 시나리오에만 사용해야합니다. 다른 상태 업데이트의 경우 이벤트 핸들러 또는 다른 수명주기 방법과 같은 다른 방법을 사용하십시오.getDerivedStateFromProps
사용하지 마십시오. 생성자는 초기 상태를 설정하기에 더 나은 장소입니다. 초기 렌더링 후 소품 변경을 기반으로 상태를 업데이트하기 위해 getDerivedStateFromProps
사용하십시오.prevState
무시 : 항상 nextProps
와 prevState
비교하여 상태를 불필요하게 업데이트하지 않도록하십시오. 이는 불필요한 재 렌즈를 방지하고 성능을 향상시키는 데 도움이 될 수 있습니다.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!