custom hook 만드는법 알아보기

2024. 8. 4. 19:55·Stack/React
반응형

custom hook 이란?

커스텀 훅이란 나만의 리액트 훅 이다.

필요한 커스텀 훅을 만들어 놓으면, 필요할 때 마다 사용이 가능해서 재사용성이 높아 효율적이다.

custom hook 만들어보기

useInput 만들어보기

'use client';

import { ChangeEvent, useState } from 'react';

const CustomHook = () => {
  const [inputValue, setInputValue] = useState('');

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
     setInputValue(e.target.value);
  };

  const handleSubmit = () => {
    alert(inputValue);
  };

  return (
    <div>
      <h1>useInput</h1>
      <input value={inputValue} onChange={handleChange} />
      <button onClick={handleSubmit}>확인</button>
    </div>
  );
};

export default CustomHook;

다음과 같은 컴포넌트가 있을때 커스텀 훅으로 기능을 분리 시킬 수 있다.

 

useInput.ts

import { ChangeEvent, useState } from 'react';

export function useInput(initialValue: string, submitAction: (message: string) => void): [string, (e: ChangeEvent<HTMLInputElement>) => void, () => void] {
  // custom hook 을 만들때에는 함수 이름 앞에 use를 작성해준다.

  const [inputValue, setInputValue] = useState(initialValue);

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    setInputValue(e.target.value);
  };

  const handleSubmit = () => {
    setInputValue('');
    submitAction(inputValue);
  };

  return [inputValue, handleChange, handleSubmit];
}

page.tsx

'use client';

import { useInput } from '@/app/custom/useInput';

function displayMessage(message: string) {
  alert(message);
}

const CustomHook = () => {
  const [inputValue, handleChange, handleSubmit] = useInput('', displayMessage);

  return (
    <div>
      <h1>useInput</h1>
      <input value={inputValue} onChange={handleChange} />
      <button onClick={handleSubmit}>확인</button>
    </div>
  );
};

export default CustomHook;

useInput.ts 코드를 분리 시킴으로써 현재는 코드가 길어진것 처럼 보이지만, useInput 의 코드는 언제 어디서든 다시 사용할 수 있는 hook으로 사용될 수 있다.

custom hook 을 만들때 간단한 주의 사항은 custom hook 인걸 인지 시키기 위해 hook 이름 앞에 use를 붙여주는 개발자간의 약속이 있다는 점을 기억하자

custom hook의 특징

custom hook에서 state와 effect는 독립적으로 작동한다.

한 컴포넌트의 여러개의 custom hook 은 각각 독립적으로 작동한다.

반응형

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

useCallback 이란?  (0) 2024.08.07
useMemo 알아보기  (5) 2024.08.07
useRef 알아보기  (2) 2024.08.01
useState 알아보고 정리하기  (1) 2024.07.31
useEffect 알아보기  (2) 2024.07.30
'Stack/React' 카테고리의 다른 글
  • useCallback 이란?
  • useMemo 알아보기
  • useRef 알아보기
  • useState 알아보고 정리하기
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
    반응형
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (119)
      • Stack (43)
        • Next.js (7)
        • React (12)
        • React-Native (15)
        • TypeScript (0)
        • Python (2)
        • JavaScript (2)
        • Android (1)
        • DB (2)
        • JAVA (1)
      • Obsidian (1)
      • AI (3)
      • AI Tools (0)
      • Tools (0)
      • Mac (0)
      • Error (7)
      • 알고리즘 정리 (6)
      • 알고리즘 문제풀이 (46)
      • 공부일상 (4)
      • 개발 도구 & 라이브러리 (0)
      • 정보처리기사 (0)
      • 기타 (6)
      • Tip (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    React-Native cli
    코테준비
    hooks
    React Hooks
    Expo
    Python
    프로그래머스
    javascript
    D2
    ios
    오블완
    코딩테스트
    react
    mongodb cloud
    java
    mongoDB Atlas
    백준
    티스토리챌린지
    리액트네이티브
    error
    알고리즘
    코테
    d1
    boj
    react-native-maps
    reactnative
    SWEA
    react-native
    ReactHook
    Next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
custom hook 만드는법 알아보기
상단으로

티스토리툴바