<aside> 💡 useEffect, useState 등이 있으며, 클래스 컴포넌트에서만 허용되던 상태값 관리나 생명주기 함수들을 함수형 컴포넌트에서도 사용할 수 있게끔 리액트에서 제공하는 함수들이다.

</aside>

useState

export default function Example2() {
	// useState 첫 번째 방식 (특정성)
  **const [count, setCount] = React.useState(0)**
	// useState 두 번째 방식 (setState와 거의 동일)
****	**const [state, setState] = React.useState({count: 0, age: 30})**

  const click = () => {
    **setCount**(count + 1)
  }

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={click}>Click me</button>
    </div>
  )
}

useEffect

// 첫 번째 방식
React.useEffect(() => {
  console.log('렌더링 되고 나서 무조건 실행')
})

// 두 번째 방식
React.useEffect(() => {
  console.log('렌더링 되고 나서 최초 한번만 실행')
}, [])

// 세 번째 방식
React.useEffect(() => {
  console.log('렌더링 되고 나서 실행, 이후 count 값이 변할 때마다 실행')
}, [count])

// 네 번째 방식
React.useEffect(() => {
  console.log('렌더링 되고 나서 실행, 이후 count 값이 변할 때마다 실행')
	return () => {
		console.log('count 값이 변하기 직전에 실행')	
	}
}, [count])

useReducer