React.useCallback () 경로

컴포넌트의 쓸모없는 재 렌더링 을 방지 하기 위해 useCallback () 을 사용하여 콜백 함수를 메모 해야한다는 말을 자주 들었을 것 입니다.

그러나 정확히 useCallback () 🤔 은 무엇 입니까 ? 생각해 본 적이 있습니까?

그것이 무엇인지 그리고 그것을 올바르게 사용하는 곳을 이해하는 데 도움을 드리겠습니다.

먼저 함수 동등성 검사를 이해합시다

우리가 그것을 어떻게 사용하는지보기 전에 그것이 무엇을 해결하는지 봅시다. 함수를 반환하는 간단한 함수를 작성해 보겠습니다.

mul1 과 mul2 는 두 숫자를 곱하는 함수입니다. 그들은 곱하기 기능에 의해 생성되었습니다 .

JavaScript의 함수는 일반 객체입니다. mul1 및 mul2 함수 는 동일한 코드를 공유하지만 서로 다른 함수 객체입니다. 그것들을 비교하면 false로 평가됩니다 .

이것이 바로 JavaScript 객체가 작동하는 방식입니다. 객체 (함수 객체 포함)는 자신과 동일합니다.

이제 useCallback ()의 ​​목적

React.useCallback ()은 기본적으로 위에서 본 함수 동등성 검사를 해결합니다. 동일한 코드를 공유하는 다른 함수 객체는 종종 React 구성 요소 내에 생성됩니다.

handleClick (인라인 함수)은 CustomComponent의 모든 렌더링에서 다른 함수 객체입니다 .

그리고 React Components와 함께 인라인으로 선언 된 함수가 있어도 아무런 해가 없습니다. 성능에 해로운 영향을 미치지 않습니다.

그러나 어떤 경우에는 렌더링 사이에 단일 함수 인스턴스를 유지해야합니다.

  1. 함수에 내부 상태가있는 경우 (예 : 함수가 디 바운스 / 스로틀 링되는 경우)

2. 내부에 래핑 된 기능적 구성 요소 React.memo()는 함수 객체 소품을받습니다.

콜백을 수락하는 자식 구성 요소가 참조 동등성 검사 (예 : React.memo () 또는 shouldComponentUpdate () )에 의존하여 해당 props가 변경 될 때 불필요한 다시 렌더링을 방지하는 경우 콜백 props가 다음과 같이 변경되지 않는 것이 중요합니다. 렌더링합니다.

따라서 부모 구성 요소에서 콜백 prop을 useCallback ()으로 래핑 하고 동일한 함수 객체를 최적화 된 자식 구성 요소로 전달하도록 보장 할 수 있습니다.

3. 함수 객체가 다른 후크에 대한 종속성 인 경우 useEffect(..., [callback])

위의 예에서 myFunction 이 MyComponent 가 다시 빌드되도록 하는 작업을 수행하면 (예 : props 또는 상태를 변경하는 작업을 수행하는 경우) 무한 루프 상태로 전환됩니다.

이를 방지하기 위해 함수 주위에 useCallback () 을 래핑 하고 종속성이 변경된 경우에만 함수가 다시 생성되도록 해당 종속성을 정의합니다. 따라서 함수는 더 이상 모든 렌더링주기에서 다시 선언되지 않습니다.

따라서 위의 사용 사례는 useCallback 후크가 도움이되는 경우입니다. 동일한 종속성 값이 주어지면 후크는 렌더링간에 동일한 함수 인스턴스를 반환하고 성능을 향상시킵니다.

실제로 useCallback () 이라는 것을 이해하는 데 도움이 되었기를 바랍니다! 😊

이 기사를 읽어 주셔서 감사합니다. 마음에 드 셨다면 👏 버튼을 클릭하여 다른 사람들이 쉽게 찾을 수 있도록 도와주세요.

Suggested posts

뇌졸중의 치명적인 결과 피하기: 가족의 여정에서 배우기 .

뇌졸중의 치명적인 결과 피하기: 가족의 여정에서 배우기 .

머리말 뇌졸중은 누구에게나 언제든지 닥칠 수 있는 의학적 응급 상황입니다. 뇌의 한 부분으로의 혈류가 중단되어 갑작스러운 뇌 기능 상실로 이어질 때 발생합니다.

Jest — 강력한 JavaScript 테스트 프레임워크

Jest — 강력한 JavaScript 테스트 프레임워크

테스트는 소프트웨어 개발의 필수적인 부분입니다. 코드가 신뢰할 수 있고 예상대로 작동하며 오류 가능성이 줄어듭니다.

Related posts

Goodreads 읽기 챌린지는 독성이 있습니다.

Goodreads 읽기 챌린지는 독성이 있습니다.

지역 서점과 또 다른 책을 흥정하면서 손에 가려움증이 퍼졌습니다. 내가 최근에 구입한 나머지 책과 같은 이 책은 내 'To Be Read'(TBR) 더미에서 왕좌를 찾을 것입니다. 그러나 나는 그것을 샀다.

직장 혁명: 최고의 전문가들이 하이브리드 및 원격 작업에 대해 논의합니다.

직장 혁명: 최고의 전문가들이 하이브리드 및 원격 작업에 대해 논의합니다.

오늘날 빠르게 진화하는 비즈니스 환경에서 하이브리드 및 원격 작업의 개념은 전례 없는 추진력을 얻었습니다. 기업이 변화하는 직원의 요구와 기대에 지속적으로 적응함에 따라 다양한 분야의 전문가들이 모여 이 혁신적인 작업 방식의 이점, 과제 및 미래에 대해 논의했습니다.

대명사는 정말 무섭다

너무 자주 그렇듯 갑자기 와닿는다 다시 중간쯤이야 <아니, 태평양에 있는 사람 말고 마룬, 카니발에 있는 사람> 모든 헤드라인이 시끄러워…..

위험한 대화

위험한 대화

우리가 이 행성에서 계속 번성하고 싶다면 위험한 대화를 해야 할 것입니다. 우리가 한 것, 우리가 하고 있는 것, 그리고 현재 우리가 계속하기로 설정한 것(또는 할 계획인 것)에 도전하는 것들.