class 객체 혹은 인스턴스를 만들어 두고 new (클래스명) 으로 만들어 사용한다.
ex) new Date() 함수
: class Date 안의 기능들이 존재하고 date로 선언한 new Date() 안의 기능들을 뽑아 쓸 수 있다.
클래스형 컴포넌트에서 선언한 메서드를 참조하기 위해서는 this를 사용해야한다.
state, props, refs, 컴포넌트 메서드, 생명주기 메서드를 참조할 수 있다.
class MycounterPage extends Component {
state = {
count: 0,
}
onClickCounter() {
this.setState((prev) => ({count: prev.count + 1}))
}
onClickArrowCounter = () => {
this.setState((prev) => ({count: prev.count + 1}))
}
}
render () {
return (
<>
<div>button onClick={this.onClickCounter.bind(this)}</div>
<div>button onClick={this.onClickArrowCounter}</div>
</>
)
}
컴포넌트가 브라우저에 나타나고 업데이트 되고, 사라지게 될 때 호출되는 메서드이다.
그리기 → render
첫번째 redering
그리고 난 뒤 → componentDidMount
reder 후 mount
그리고 난 뒤 변경 → componentDidUpdate
첫번 째 render 후 rerender 시 호출
그리고 난 뒤 사라짐 → componentWillUnmount
컴포넌트 사용을 마칠 때 호출
특정 태그를 조작하기 위해 선택할 때 사용하는 도구이다.
ex) input tag를 선택하여 커서를 깜빡이도록 하고 싶을 때
컴포넌트가 그려진 이후 실행되는 함수이다.
const inputRef = useRef<HTMLInputElement>(null);
useEffect(() => {
inputRef.current?.focus();
}, []);
return <input type="password" ref={inputRef} />;
위 형식에서 [] 부분을 의존성 배열이라 칭한다.
이 의존성 배열 안의 내용에 들어있는 요소가 변경될 때, 실행 되며,
의존성 배열을 생략하고 작성할 수도 있는데 그럴경우, 변경되는 모든 사항마다 실행하게 됩니다.