[React] 5. Hook

리액트는 과거 버전에서 UI를 만들 땐 Function 컴포넌트 , 기능을 만들 땐 Class 컴포넌트로 분류하여 작성하였으며 

 

당시에는 State , Ref 라는 기능으로 사용이 되었으나 

이제는 Hook 을 통해 Class 컴포넌트로 사용되던 기능들을 낚아채 Function으로 가져간다는 의미로 Hook 이라고 부른다.

 

 

Hook 으로 만들어진 것들은 모두 use 가 앞에 붙는 형태로 이루어져 있습니다.

 

(useState , useRef 등등)

(단, 이런 Hook 들은 함수 컴포넌트 내부에서만 호출 가능, 조건문(반복문) 내에선 불가능함. )

 

또한 기존의 State , Ref가 아닌 내가 필요로 하는 기능을 제작해 만들 수 있는데 이걸 Custom Hook이라 부른다.

 

 

예시로 

import { useRef, useState } from 'react'
import './App.css'
import InputText from './Hook/InputText'
function App() {

  return (
    <div>
      <InputText/>
    </div>
  )
}

export default App
import { useState } from "react";


const InputText = (text) => {
    const [input, setInput] = useState("");

    const onChangeText = (e) => {
        setInput(e.target.value);
    }

    return (
        <div>
            <input type="text" value={input} onChange={onChangeText}/>
            {input}
        </div>
    )
};

export default InputText;

 

이렇게 코드를 짜도 되지만 이러면 결국 기능 , 화면이 섞여버려서 기능 , 코드 보기에 불편하다는 문제가 있어서

InputText 파일을 한번 더 쪼개면 

 

 

import { useState } from "react";
import useInput from "../Hook/useInput";

const InputText = (text) => {
    const [input, onChangeText] = useInput("");

    return (
        <div>
            <input type="text" value={input} onChange={onChangeText}/>
            {input}
        </div>
    )
};

export default InputText;

 

 

import { useState } from "react";


function useInput() {
    const [input, setInput] = useState("");

    const onChange = (e) => {
        setInput(e.target.value);
    };

    return [input,onChange];
}

export default useInput;

 

이렇게 짜면 Hook을 통해 내가 만든 useInput 이라는 기능으로 

호출 할 때 setInput 이 아닌 onChangeText를 넣어 동일하게 실행이 가능하다. 

 

 

 

'JavaScript > React' 카테고리의 다른 글

[React] 7. useEffect  (0) 2025.02.21
[React] 6. 리액트의 생명주기(Life cycle)  (0) 2025.02.14
[React] 4. useRef  (0) 2025.02.13
[React] 3. 상태 (State) [Props와 이어집니다.]  (0) 2025.02.12
[React] 2. 속성 (Props)  (0) 2025.02.12