μ»€μŠ€ν…€ ν›…(Custom hooks)

RingKim1Β·2024λ…„ 8μ›” 6일

React

λͺ©λ‘ 보기
6/6

πŸ“ŒCustom hooks

  • React 16.8μ—μ„œ λ„μž…λœ κΈ°λŠ₯
  • κ°œλ°œμžκ°€ ν•„μš”ν•œ λ‘œμ§μ„ μ •λ¦¬ν•˜κ³  λ½‘μ•„λ‚΄μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ»€μŠ€ν…€ ν•œ ν›…
  • λͺ©μ  : 같은 λ‘œμ§μ„ μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈ 간에 곡유

Custom hooks λ§Œλ“€κΈ°

  1. srcν•˜μœ„ hooks 폴더 생성
  2. μ»€μŠ€ν…€ ν›… 파일 생성(use~)
    *ν™•μž₯자 : js, ts, jsx, tsx 상관 μ—†μŒ
    보톡 js or ts둜 λ§Œλ“€λΌλ˜λ° μžμ‹ μ΄ μ–΄λ–»κ²Œ ν™œμš©ν•˜κΈ° λ‚˜λ¦„
  3. λ‚΄λΆ€μ—μ„œ useState, useEffect λ“±μ˜ Hook을 μ‚¬μš©ν•˜μ—¬ μƒνƒœμ™€ λ‘œμ§μ„ 관리
    => μƒνƒœ κ°’κ³Ό ν•¨μˆ˜λ“€μ„ λ°˜ν™˜
    => μž¬μ‚¬μš© : ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ»€μŠ€ν…€ 훅을 ν˜ΈμΆœν•˜μ—¬ λ‘œμ§μ„ 곡유

μ˜ˆμ‹œ

  1. 폴더 및 파일 생성
// src/hooks/useCounter.js

import React, { useState } from 'react';

function useCounter(initialCount = 0) {
  const [count, setCount] = useState(initialCount);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);

  return { count, increment, decrement };
}

export default useCounter
  1. ν•„μš” μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ»€μŠ€ν…€ ν›… 호좜 ν›„ μ‚¬μš©
import useCounter from "@/src/hooks/useCounter.js"

function Counter() {
  const { count, increment, decrement } = useCounter(0);

  return (
    <div>
      <h1>{count}</h1>
      <button onClick={increment}>증가</button>
      <button onClick={decrement}>κ°μ†Œ</button>
    </div>
  );
}

export default Counter;

μ°Έκ³ 
κ³΅μ‹λ¬Έμ„œ

profile
μ»€ν”ΌλŠ” μ½œλ“œλΈŒλ£¨

0개의 λŒ“κΈ€