오늘의 오전 학습 - React의 useDeferredValue

검색 기능을 개발할 때 검색 타이핑에 따른 지연된 네트워크 요청을 위한 debounce 기능을 활용하는 경우가 많습니다. 이러한 기능을 React의 useDeferredValue 훅을 통해 구현할 수 있다는 포스팅을 읽게 되어 요약해보고자 합니다.


참고문헌


https://medium.com/@Evelyn.Taylor/say-goodbye-to-debouncing-use-usedeferredvalue-hook-56e1c28a3e49


요약


useDeferredValue?


  • 목적은 덜 중요한 부분의 렌더링을 지연시켜 렌더링의 우선순위를 반영하고자 함입니다.

  • 검색 input 의 입력을 예시로 생각해보면, 즉각적으로 화면 업데이트가 반영되어야 할 부분은 입력창입니다. ('a' -> 'ab')

  • 입력결과에 따른 리스트는 캐시된 데이터가 아닌 이상 즉각적인 업데이트가 사실상 불가능합니다. (서버에 요청을 하는경우)

  • 이때, 변경되는 입력 state 를 useDeferredValue 의 인자로 넣어, 새로운 반환 state 를 사용하게 되면, 입력창에 대한 즉각적인 업데이트와 더불어, 새로운 검색어('ab') 에 대한 리스트 데이터가 전달될때까지 이전 렌더링 결과('a')를 화면에 우선적으로 렌더링합니다.


특이사항 및 장점


  • 매 요청마다 loading 화면이 아닌 이전 상태값을 화면에 렌더링 할 수 있어 경우에 따라서는 사용자의 경험에 유리할 수 있습니다.

  • 우선적으로 이전 화면을 렌더링 하지만, 백그라운드에서는 새롭게 변경된 state 에 대한 렌더링을 진행하게 됩니다. 이러한 렌더링 과정에 간섭이 발생한다면(예를 들면 검색 상태값 'ab'에 대한 렌더링을 진행중인데, 그 중간에 'abc' 로 변경을 할 경우) 기존에 작업중이던 렌더과정을 중단하고, 새로운 상태값에 대한 렌더링을 진행하게 됩니다.

  • 만일 렌더링 이후 effect 가 적용되는 상황이라면, 중단된 렌더링에서는 effect 가 실행되지 않습니다

  • 이러한 특징점은 기존에 사용되던 debounce 의 기능과, 렌더링 최적화에 도움을 줄 수 있습니다.

Say Goodbye to Debouncing: Use "useDeferredValue" Hook

Medium

Say Goodbye to Debouncing: Use "useDeferredValue" Hook

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 12월 8일 오전 12:59

조회 126

댓글 0

    함께 읽은 게시물

    < 성장은 복잡한 곱셈이 아니라 단순한 더하기의 연속이다 >

    1

    ... 더 보기

    사업아이템과 고객 검증을 통한 사업아이템 고도화

    ... 더 보기

    《콤플렉스는 고통의 실체》

    ... 더 보기


    토스 데이터 직군 집중 채용 - 면접만 봐도 100만원!

    ... 더 보기

    토스 DATA·ML 집중채용

    toss.im

    토스 DATA·ML 집중채용

    GPT-5 성능도 성능이지만 속도가 굉장히 빠르네요. 이거 생각은 하고 말하는거야? 싶을 정도. 개인적으로는 최상위 성능을 이정도 속도로 뽑아낸다는게 가장 중요한 혁신인 것 같습니다. 성능도 성능이지만 이 속도 덕분에 더욱 많은 것들이 더욱 빠르게 바뀌지않을까 싶습니다.

    조회 1,295