💡
vscode에 리액트 플러그인을 이제 설치했다..^^
매우 편리
(ES7 React/Redux/GraphQL/React-Native snippets)
componentDidMount()
: 컴포넌트가 첫 렌더링된 후 실행 (비동기 요청)componentDidUpdate()
: 리렌더링 후 실행componentWillUnmount()
: 컴포넌트가 제거되기 직전 실행 (비동기 요청 정리)componentDidMount()
: 비동기 요청 (ex. setInterval
)componentWillUnmount()
: 비동기 요청 정리RSP.jsx
interval;
componentDidMount() { // 컴포넌트가 첫 렌더링된 후 (비동기 요청)
this.interval = setInterval(() => {...}, 1000);
}
componentWillUnmount() { // 컴포넌트가 제거되기 직전 (비동기 요청 정리)
clearInterval(this.interval);
}
코드 복붙도 귀찮네.. 😅
onClick={() => this.onClickBtn('바위')}
onClickBtn = (choice) => { ... }
// ============================== 위를 아래처럼 변경할 수 있음
onClick={this.onClickBtn('바위')}
onClickBtn = (choice) => () => { ... }
useEffect(() => { // componentDidMount, componentDidUpdate 역할 (일대일 대응은 아님)
interval.current = setInterval(changeHand, 100);
return () => { // componentWillUnmount 역할
clearInterval(interval.current);
}
}, [imgCoord]); // 인수 배열에 넣은 값이 바뀔 때 useEffect가 실행됨 (값이 없으면 처음 한 번만 실행)
👉 Hooks에서는 매번 clearInterval
을 하기 때문에 setTimeout
과 동일한 동작이 됨
변하는 값마다 다른 효과를 주고 싶은 경우 useEffect
를 여러 개 선언할 수도 있음
클래스: 변하는 값을 한번에 바꾸고 componentDidMount
, componentDidUpdate
, componentWillUnmount
를 각각 처리
Hooks: 변하는 값을 각각 감지하여 모든 효과를 한번에 처리