일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vite
- 부모요소의 패딩 무시
- Carousel
- BFC
- ㅡ
- 함수형프로그래밍
- parent padding
- ignore padding
- es6
- 조건부스타일
- useQueryClient
- twoarrow
- DOM
- react
- 리액트
- 부모패딩
- CustomHook
- ?? #null병합연산자
- tailwindCSS
- accordian
- transition
- QueryClient
- BlockFormattingContext
- 서초구보건소 #무료CPR교육
- 제어컴포넌트
- 화살표2개
- alias설정
- debouncing
- createPortal
- 문제해결
Archives
- Today
- Total
프론트엔드 첫걸음
성능개선 - useTransition, useDeferredValue 본문
코딩애플 강의 38강
batch - setState함수 맨 마지막것만 실행되는것
리액트 17에서는 ajax나 setTimeout 내부는 batch 없이
(맨마지막 setState만 실행되는것 없이) 모든 setStatet실행됐음
리액트 18에서는 ajax나 setTimeout 내부에서도 setState batch
useTransition , useDeferredValue
import {useState, useTransition, useDeferredValue } from 'react';
let a = new Array(7000).fill(0)
function App() {
let [name, setName] = useState('')
let [isPending, startTransition] = useTransition();
let state = useDeferredValue(name);
return (
<div className="App">
<input onChange={(e)=>{
startTransition (()=>{
setName(e.target.value)
})
}} />
{
isPending ? '로딩중' :
a.map(() => {
return <div> {state} </div>
})
}
</div>
);
}
ReactDOM.render(<App/>, document.getElementById("root"));
useTransition
- 브라우저는 싱글스레드 ~ startTransition 안에 있는 것을 늦게처리하도록 하여 UX 개선
- isPending은 startTransition이 처리중일때 true로 변함
useDeferredValue
- useDeferredValue 는 인수로 받는 props나 state 를 늦게 처리하도록 하여 성능개선
사용 전
See the Pen Untitled by JEONG (@cona) on CodePen.
사용 후
See the Pen Untitled by JEONG (@cona) on CodePen.
'개발 공부 > React' 카테고리의 다른 글
리액트 절대경로 사용하기 (0) | 2023.01.05 |
---|---|
구글로그인 추가 (0) | 2022.10.20 |
성능개선 - lazy import (0) | 2022.09.28 |
리덕스 관련 코드 작성하기 2. Hooks 사용하여 컨테이너 컴포넌트 만들기 (0) | 2022.09.06 |
리덕스 관련 코드 작성하기 (0) | 2022.09.04 |