Hook : 로직에 기반을 둔 작은 메서드 들로 컴포넌트의 기능을 나눌 수 있다
useState : 컴포넌트의 state를 간편하게 생성하고 업데이트를 시킬 수 있게 해주는 도구 (state를 관리할 때에 필요한 함수)
import { useState } from 'react';
const [state, setstate] = useState(초기값);
setState(1); // state의 값을 1로 변경
-setState함수를 이용해서 state의 값을 변경하면 해당 컴포넌트는 화면에 다시 렌더링 되어서 state가 변경될 때마다 화면이 업데이트된다
useEffect : react component가 렌더링 될 때마다 특정 작업(side effect : component가 렌더링 된 이후에 비동기로 처리되어야 하는 부수적인 효과)을 실행할 수 있도록 한다
-state 변수만 변하는 것을 감지해서 렌더링 되도록 설정 해줄 수 있다
componentDidMount / 컴포넌트를 만들고, 첫 렌더링을 다 마친 후 실행
componentDidUpdate / 리렌더링을 완료한 후 실행 (render()가 업데이트될 때마다 실행)
componentWillUnMount / 컴포넌트를 DOM에서 제거할 때 실행
useEffect(function, deps)
function:실행하고자 하는 함수
deps: 배열 형태. function을 실행시킬 조건(deps에 특정값을 넣게 되면 컴포넌트가 mount될 때, 지정한 값이 업데이트될 때 useEffect를 실행)
-useEffect 함수 불러오기
import React, { useEffect } from "react";
useEffect(() => {
document.title = `You clicked ${count} times`;
}, []);
useEffect(함수, []) 이렇게 빈칸을 넣어놓으면 첫 렌더링 후 한 번만 렌더링 하도록 만들 수 있다
useRef : 원하는 DOM 혹은 컴포넌트에 접근 가능하게 해주는 시스템
import { useRef } from 'react';
-useRef는 current를 통해 값에 접근할 수 있다
useLayoutEffect : useEffect와 동일하지만, 모든 DOM 변경 후에 동기적으로 발생 ( DOM을 조작하는 코드가 존재하더라도, 사용자는 깜빡임을 보지 않는다) (useLayoutEffect 내에서 스케줄된 업데이트는 브라우저가 Paint하기 전에 동기적으로 실행(Flush)된다)