React 구성 요소는 React Application의 빌딩 블록이며 기능 구성 요소 및 클래스 구성 요소의 두 가지 주요 유형으로 분류 할 수 있습니다.
기능 구성 요소 :
기능 구성 요소의 기본 예는 다음과 같습니다.
<code class="javascript">function Welcome(props) { return <h1>Hello, {props.name}</h1>; }</code>
클래스 구성 요소 :
React.Component
확장하는 ES6 클래스입니다.this
사용해야합니다.componentDidMount
, componentDidUpdate
및 componentWillUnmount
와 같은 수명주기 방법이 있습니다.클래스 구성 요소의 기본 예는 다음과 같습니다.
<code class="javascript">class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code>
기능적 및 클래스 구성 요소 사이의 선택은 주로 사용중인 React 버전과 구성 요소의 특정 요구에 따라 다릅니다.
다음과 같은 경우 기능 구성 요소를 사용하십시오.
useState
, useEffect
, useContext
등과 같은 후크는 기능적 구성 요소를보다 강력하고 다재다능하게 만듭니다.this
수명주기 방법을 다루지 않으려 고합니다.다음과 같은 경우 클래스 구성 요소를 사용합니다.
getDerivedStateFromProps
또는 getSnapshotBeforeUpdate
와 같은 후크로 쉽게 복제 할 수없는 특정 수명주기 방법을 사용해야합니다.현대의 반응 개발에서, 후크를 갖는 기능적 구성 요소는 일반적으로 단순성과 이전에 클래스 구성 요소에 배타적 인 모든 기능을 처리 할 수있는 능력으로 인해 선호됩니다.
React의 상태 관리는 후크의 도입으로 크게 발전하여 기능 및 클래스 구성 요소에서 상태가 어떻게 처리되는지에 영향을 미쳤습니다.
수업 구성 요소 상태 :
state
객체를 통해 상태를 관리합니다.this.state
및 this.setState()
사용하여 액세스하고 업데이트됩니다.this.setState()
비동기식이며 상태가 업데이트 된 후 실행할 콜백 함수를 수락 할 수 있습니다.예:
<code class="javascript">class Counter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } increment = () => { this.setState({ count: this.state.count 1 }); } render() { return ( <div> <p>Count: {this.state.count}</p> <button onclick="{this.increment}">Increment</button> </div> ); } }</code>
기능 구성 요소의 상태 :
useState
후크를 사용하여 상태를 관리합니다.useState
상태 변수를 반환하고 업데이트 할 함수를 반환합니다.예:
<code class="javascript">function Counter() { const [count, setCount] = useState(0); const increment = () => { setCount(count 1); } return ( <div> <p>Count: {count}</p> <button onclick="{increment}">Increment</button> </div> ); }</code>
주요 차이점은 다음과 같습니다.
this.state
및 this.setState()
사용하고 기능 구성 요소는 useState
와 같은 후크를 사용합니다.this.setState()
클래스 구성 요소의 비동기 적이지만 useState
의 업데이트는 동기입니다.useEffect
사용합니다.REACT 구성 요소의 성능을 최적화하는 것은 효율적인 응용 프로그램을 구축하는 데 중요합니다. 후크가있는 기능적 구성 요소는 이와 관련하여 클래스 구성 요소에 비해 몇 가지 장점을 제공합니다.
useMemo
및 useCallback
과의 회고록 :
useMemo
사용하여 비싼 계산 및 useCallback
메모 화하여 기능을 메모 화 할 수 있습니다. 이것은 값의 재 계산 또는 기능의 재생을 방지함으로써 불필요한 재 렌즈를 방지합니다. useMemo
의 예 :
<code class="javascript">function MyComponent({ prop }) { const expensiveResult = useMemo(() => computeExpensiveValue(prop), [prop]); return <div>{expensiveResult}</div>; }</code>
React.memo
shouldComponentUpdate
봐야합니다. React.memo
사용하여 불필요한 재 렌더를 피하십시오 :
React.memo
기능 구성 요소를 추억화하는 데 사용하여 소품이 변경되지 않은 경우 불필요한 재 렌즈를 방지 할 수 있습니다.예:
<code class="javascript">const MyComponent = React.memo(function MyComponent(props) { // Component implementation });</code>
PureComponent
또는 shouldComponentUpdate
구현하여 유사한 결과를 달성 할 수 있지만 이러한 방법은 React.memo
보다 유연하지 않습니다. useState
및 useReducer
로 상태 업데이트 최적화 :
useCallback
과 함께 useState
및 useReducer
사용하여 콜백이 불필요한 재 렌즈를 유발하지 않도록 할 수 있습니다. useReducer
의 예 :
<code class="javascript">const initialState = { count: 0 }; function reducer(state, action) { switch (action.type) { case 'increment': return { count: state.count 1 }; default: throw new Error(); } } function Counter() { const [state, dispatch] = useReducer(reducer, initialState); return ( Count: {state.count} <button onclick="{()"> dispatch({ type: 'increment' })}> </button> > ); }</code>
this.setState()
로 관리되며 성능 튜닝 측면에서 덜 효율적일 수 있습니다. useEffect
사용한 수명주기 최적화 :
useEffect
사용하면 정리 및 종속성 기반 업데이트를 포함한 부작용을 세밀하게 제어 할 수 있습니다.예:
<code class="javascript">function MyComponent() { useEffect(() => { // Side effect code here return () => { // Cleanup code here }; }, [/* dependencies */]); // Component implementation }</code>
요약하면, 후크가있는 기능적 구성 요소는 클래스 구성 요소에 비해 성능을 최적화하는보다 유연하고 효율적인 방법을 제공합니다. useMemo
, useCallback
및 useEffect
와 같은 후크를 활용하여 개발자는 덜 보일러 플레이트 코드로 더 나은 성능을 달성 할 수 있습니다.
위 내용은 다른 유형의 React 구성 요소 (기능적, 클래스)는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!