풀이
useEffect를 사용하여 tab 값이 변경될 때마다 fade 값을 업데이트하고, 컴포넌트가 언마운트될 때 fade를 초기화하도록 넣었다.
function TabContent({tab}){
let [fade, setFade] = useState('')
useEffect(()=>{
setTimeout(()=>{ setFade('end') }, 100)
return ()=>{
setFade('')
}
}, [tab])
return (
<div className={`start ${fade}`}>
{/* <div className={'start ' + fade}> */}
{ [<div>내용0</div>, <div>내용1</div>, <div>내용2</div>][tab] }
</div>
)
}
알게 된 점
- cleanup function을 사용해 end를 뗐다가 부착할 수 있도록 하였다.
- setTimeout을 이용하여 automatic batching 기능을 무효할 수 있도록 하였다.
- class에 변수를 넣으려면 {}와 백택 기호(`)로 감싸면 된다.
<div className={`container ${pagefade}`}>
같이 보면 좋은 글
[중요!] React : useEffect, clean up (조건 별 실행순서), automatic batching — Stack flows in you (tistory.com)
출처 : 코딩애플 https://codingapple.com/
'⚛️ React > 문제풀기 (코딩애플: React)' 카테고리의 다른 글
React : 상품을 장바구니에 추가하기 (immer, redux, action, payload) (0) | 2023.06.30 |
---|---|
React : 장바구니 제품 수량변경 (map, redux, action, payload) (0) | 2023.06.22 |
React : 탭 만들기 (if else, array로 만들기) + props 귀찮을 때 팁 (0) | 2023.06.12 |
React : 더보기 버튼을 누를 때마다 다른 get주소 데이터 불러오기 (+로딩중) (0) | 2023.06.01 |
React : ajax 상품 불러오기 전 로딩중 만들기 (0) | 2023.05.31 |