React Hook : State와 클래스형 컴포넌트에서 접근할 수 있던 생명주기 등을 함수형 컴포넌트에서도 함수로 다룰 수 있도록 추가된 함수 집합체
useState : State 상태변수 관리
import { useState } from "react";
const App = () => {
// 구조분해 할당 문법
const [number, setNumber] = useState(0);
return (
<>
<h1> Number is {number} </h1>
<button onClick={
() =>
setNumber(number + 1)
}>Button</button>
</>
);
}
JS ES6 문법 : 구조분해 할당 (Destructuring Assignment)
// Array Destructuring Assignment
let [a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20
// Object Destructuring Assignment
let student = {
name: "Yongmin Yoo",
age: 23,
phone: "010-3485-1022"
};
let { name, age, phone } = student;
console.log(name); // Yongmin Yoo
console.log(age); // 23
console.log(phone); // 010-3485-1022
let { name: aaa, age: bbb, phone: ccc } = student;
console.log(aaa); // Yongmin Yoo
console.log(bbb); // 23
console.log(ccc); // 010-3485-1022
useEffect : 생명주기와 유사하게 컴포넌트 렌더링 이벤트 관리
import { useEffect, useState } from "react";
const App = () => {
const [number, setNumber] = useState(0);
const [arr, setArr] = useState(0);
useEffect(() => {
return () => {
};
}, []);
useEffect(() => {
// componentDidMount
// componentDidUpdate
console.log("");
return () => {
// componentWillUnmount
};
}, []);
// 배열에 특정 props, state 등의 변수 값을 넣을 수 있다.
// 그러면, componentDidUpdate 생명 주기와 유사하지만,
// 배열에 들어있는 값이 Update 된 경우에만 동작한다.
// 빈 배열인 경우, Update를 확인할 값이 없으므로, 모든 Update에 반응하지 않는다.
// 모든 Update에 반응하도록 하려면 배열을 생략한다.
}
useRef : DOM의 특정 요소에 직접 접근
useMemo : 메모이제이션 방식으로 연산된 값을 저장해두었다가, 이후에 재사용 할 때 호출하여 사용.
useCallback : useMemo와 유사하지만, 변수가 아닌 함수를 메모이제이션 방식으로 저장해두었다가, 이후에 재사용.