React 최적화: useMemo() , React.memo() & useCallback()

메모 및 useCallback



최고의 성능 및 최적화 교육



최적화 전


  • 모든 구성 요소를 다시 렌더링하는 문제로 환경 만들기
  • 반응 작동 방식 이해 및 재평가: 상태 선언을 제외하고 반응에서 모든 것을 다시 실행합니다.

  • 재실행/재평가와 재렌더링의 차이점
  • 재평가는 매번 작동하고 비교해야 함
  • re-render는 react-dom
  • 을 호출하는 경우에만 변경 작업을 수행합니다.
  • 최적화를 사용하지 않은 경우 모든 반응 구성 요소가 매번 다시 실행됩니다(다시 렌더링되지 않음)
  • .


    최적화 방법



    재실행/재평가 작업을 변경 시에만 다시 렌더링하는 것과 같은 작업을 수행하는 시도입니다.
  • React.memo()
  • 다시 실행하기 전에 먼저 확인하기 위해 구성 요소 상태 및 소품을 저장합니다
  • .

  • 그것은 구성 요소의 속성과 상태를 캐시하므로 쓸모없는 방식으로 많이 사용하면 캐싱이 많아 런타임에 무거워집니다.



  •    import React from "react"
    
       const Component=(props)=>{
        //some javascript
        return (
            //some jsx
        )
       }
       export default React.memo(Component)
    


  • useMemo()

  • Js의 참조 유형 간의 차이점


     let name = "adel"
     let name 2 = "adel"
    
     //name === name2 --> true
    
     let obj = {name:"adel"}
     let obj2 = {name:"adel"}
    
     //obj === obj2 --> false
     //objects on different refrences values
    
     let obj3 = obj
     //passing by refrence
    
     //obj === obj3 --> true
    
  • 기본 유형
  • 참조 유형: 개체, 배열 및 함수




  • useMemo는 배열, 객체 및 재회할 때마다 재선언 문제를 해결하기 위해 무언가를 반환하는 함수와 함께 사용됩니다.

     const obj = useMemo(()=>{ return name: "adel" }, [])
    


  • useMemo는 재실행 시 새 참조로 객체 재선언을 방지합니다
  • .
  • useCallback()
  • useCallback()은 재실행 시 새 참조로 함수(반환 없음)가 재선언되지 않도록 합니다.


  •    //this won't work it will be re-declared with new refrence every re-run
    
       const addAge = () => {
         //function logic with no return
       }
    
       //solution
    
       const addAge = useCallback(() => {
         //function logic
       }, [])
    
       return <Component addAge={addAge} />
    


  • useCallback은 useMemo와 같은 반환 값이 아니라 논리 자체를 캐시합니다
  • .

    좋은 웹페이지 즐겨찾기