1.Hook의 개요
https://ko.reactjs.org/docs/hooks-intro.html
Hook의 개요 – React
A JavaScript library for building user interfaces
ko.reactjs.org
Hooks?!
useState, useEffect, useMemo, useCallback, useReducer, etc...
useState
1) state 만들기
import {useState} from "react" //react 기본 내장 함수
//import React from "react";
//함수형 변수선언
const [isChecked, setIsChecked] = useState(false);
//다른 방식
const [isChecked,setIsChecked] = React.useState(false);
const onClick=()=>{
setIsChecked(!isChecked); //true
}
useEffect
import {useState, useEffect} from "react";
function App(){
const [data, setData] =useState(false);
useEffect(()=>{
if(data){
console.log("Data changed!") //data가 바뀔때마다, 이를 감지해 콘솔 출력
}},[data]);
return(
<div>
<button value="적용" onClick={setData(!data)}></button>
</div>
)}
export default App;
etc
useMemo : 과거에 계산한 값을 반복해서 사용할때, 그 값을 캐시에 저장
useCallback : useMemo의 함수 버전, 반복적으로 사용되는 함수를 캐시에 저장
useRef : HTML요소나 컴포넌트의 메모리 주소를 가져와, 객체형식으로 관리
예시) 선택한 색상 출력
<script type="text/babel">
const root = document.getElementById("root");
const rootElement = ReactDOM.createRoot(root);
const buttonState = [
{ number: 1, color: "pink" },
{ number: 2, color: "green" },
{ number: 3, color: "blue" },
{ number: 4, color: "red" },
{ number: 5, color: "yellow" },
{ number: 6, color: "purple" }
];
//버튼 컴포넌트
const Button = ({ number, color, clickFunction }) => {
const handleClickButton = (color) => {
console.log("color", color);
alert(`선택한 색은 ${color} 입니다`);
//HomePage 컴포넌트의 함수를 쓰기위해 props를 통한 함수설정
clickFunction(color);
};
return (
<button
//값을 넘길때
onClick={() => handleClickButton(color)}
style={{ backgroundColor: color }}
>
{number}
</button>
);
};
//홈페이지 컴포넌트
function HomePage() {
//Hooks
const [selectedButton, setSelectedButton] = React.useState("");
return (
<React.Fragment>
{buttonState.map((item, index) => {
return (
<Button
key={index}
number={item.number}
color={item.color}
//버튼 컴포넌트에 적용시키기 위해 props로 넘긴다.
clickFunction={setSelectedButton}
/>
);
})}
<h1>내가 선택한 색은 {selectedButton}색입니다.</h1>
</React.Fragment>
);
}
const element = <HomePage />;
rootElement.render(element);
</script>

Hooks Rules
1) 최상위에서만 Hook 호출
- 반복문, 중첩된 함수, 조건문 등 호출 x
2) React 함수에서만 Hook 호출(일반적 Js함수 X)
3)Hook을 만들때 앞에 use붙이기
- Hook 규칙 적용되는지 파악 가능
4)React Hook 호출되는 순서에 의존
- 위에서 아래로 순서에 맞게 동작
'React' 카테고리의 다른 글
| React-State(4) (0) | 2023.02.07 |
|---|---|
| React-components&Props(3) (0) | 2023.02.07 |
| React-Virtual DOM(2) (0) | 2023.02.02 |
| React-웹사이트에 React추가하기&JSX(1) (0) | 2023.02.02 |