TIL 42. React - Custom Hook

isk·2022년 12월 28일
0

TIL

목록 보기
84/122
post-custom-banner

코딩할 때 자주 사용하는 input을 custom hook으로 만들 수 있다.
아래는 custom hook을 적용한 코드다.
useInput이라는 custom hook을 만들어서 사용했다.

// src/App.jsx

import React from "react";
import useInput from "./hooks/useInput";

const App = () => {
  const [title, onChangeTitleHandler] = useInput();
  const [body, onChangeBodyHandler] = useInput();

  return (
    <div>
      <input
        type="text"
        name="title"
        value={title}
        onChange={onChangeTitleHandler}
      />

      <input
        type="text"
        name="body"
        value={body}
        onChange={onChangeBodyHandler}
      />
    </div>
  );
};

export default App;

아래는 custom hook 코드 부분이다.

// src/hooks/useInput.js

import {useState} from "react";

const useInput = () => {
  // 2. value는 useState로 관리하고,
  const [value, setValue] = useState("");

  // 3. 핸들러(함수) 로직도 구현한다.
  const handler = (e) => {
    setValue(e.target.value);
  };

  // 1. 이 훅은 const [title, onChangeTitleHandler] = useInput(); 부분의 
  // [ ]를 반환하는데, 첫번째는 value, 두번째는 handler를 반환한다.
  // ex) title = value, onChangeTitleHandler = handler
  return [value, handler];
};

export default useInput;

[value, handler]를 반환하기 때문에 useInput은 [value, handler]가 되고,
구조분해할당으로 [value, handler] = useInput이 된다.
구조분해할당한 useInput을 사용자가 이용하는데,
value는 useInput.js 파일의 useInput 속 value가 되고,
handler는 useInput.js 파일의 useInput 속 handler함수가 된다.

post-custom-banner

0개의 댓글