컴포넌트의 Lifecycle
Lifecycle hook 다는 법
뭐야 useEffect 안에 안써도 똑같은데요
오늘의 숙제
노란 박스 하나 만들고 Detail 페이지 방문 후 2초 후에 박스가 사라지게 해보십시오.
컴포넌트의 Lifecycle
class Detail2 extends React.Component {
componentDidMount(){
//Detail2 컴포넌트가 로드되고나서 실행할 코드
}
componentDidUpdate(){
//Detail2 컴포넌트가 업데이트 되고나서 실행할 코드
}
componentWillUnmount(){
//Detail2 컴포넌트가 삭제되기전에 실행할 코드
}
}
useEffects(()=>{
// 이런 식
})
Lifecycle hook 다는 법
import { useParams } from "react-router-dom";
import { useState, useEffect } from "react";
function Detail(props) {
let {id} = useParams();
let find = props.shoes.find((x) => x.id == id)
**useEffect(() => {
// 여기 적은 코드는 컴포넌트 로드 & 업데이트 마다 실행됨
// 근데 html 렌더링 이후에
console.log('안녕');
});**
**let [count, setCount] = useState(0);**
return (
<div className="container">
<div className="row">
<div className="col-md-6">
<img src={process.env.PUBLIC_URL + '/img/shoes'+(Number(id)+1)+'.jpg'} width="100%" />
</div>
<div className="col-md-6">
<h4 className="pt-5">{props.shoes[id].title}</h4>
<p>{props.shoes[id].conent}</p>
<p>{props.shoes[id].price}원</p>
<button className="btn btn-danger">주문하기</button>
**<button onClick={()=> { setCount(count+1) }}>버튼</button>**
</div>
</div>
</div>
);
}
export default Detail;
따라서 조금이라도 html 렌더링이 빠른 사이트를 원하면 쓸데없는 것들은 useEffect 안에 넣어보기