React 강좌) trendy React 2-2. Custom Hooks 알아보기

Danuel·2019년 4월 18일
6

trendy React

목록 보기
12/21
post-thumbnail

이번 편에서는 React Hooks를 조금 더 유연하게 사용할 수 있는 방법인 Custom Hooks를 알아보겠습니다.

Custom Hooks 기본 형태

import React, { useState } from 'react'

const User = () => {
  const [nickname, setNickname] = useState('')

  const updateNickname = event => {
    const nickname = event.target.value

    setNickname(nickname)
  }

  return (
    <div>
      <label>{nickname}</label>
      <input value={nickname} onChange={updateNickname} />
    </div>
  )
}

이번에는 nickname을 변경하면 label에도 반영하는 컴포넌트입니다. React Hooks를 이용하여 State를 만들고, State를 변경하는 함수를 만들고, 그것을 태그에 할당하는 형태입니다.

지금은 간단한지만, 길이 체크, 알파벳과 숫자 체크, API 요청 등 로직을 하나씩 추가하기 시작하면 복잡하게 변하는 것은 금방입니다.

import React, { useState } from 'react'

const useUser = () => {
  const [nickname, setNickname] = useState('')
  const [isAdmin, setBeAdmin] = useState(false)

  const updateNickname = event => {
    const nickname = event.target.value

    setNickname(nickname)
  }

  return [nickname, updateNickname]
}

const User = () => {
  const [nickname, setNickname] = useUser()

  return (
    <div>
      <label>{nickname}</label>
      <input value={nickname} onChange={setNickname} />
    </div>
  )
}

이 예시와 같이 별도의 함수로 분리해서 작성할 수 있으며, 이것을 Custom Hooks라고 합니다.

이 패턴은 당장에 작성해야 할 코드는 많지만 장기적으로 아래의 장점을 얻을 수 있습니다.

  • 컴포넌트와 로직을 분리할 수 있습니다.
  • 컴포넌트와 로직을 조합하는 형태로 작성할 수 있습니다.
  • 여러 컴포넌트에서 재활용이 가능하기 때문에 중복 코드를 줄일 수 있습니다.
  • 여러 React 프로젝트를 진행한다면 효용성 좋은 Custom Hooks를 공유하며 기술적 경험을 축적할 수 있습니다.
profile
다뉴하는 코딩

3개의 댓글

comment-user-thumbnail
2019년 4월 18일

좋아요와 댓글 감사합니다.
오탈자, 질문 등은 언제든지 댓글로 달아주세요!

답글 달기
comment-user-thumbnail
2021년 3월 8일

예시 코드의 경우에 User 컴포넌트에서 useUser 훅에 있는 isAdmin state랑 setBeAdmin 함수를 사용하려면 어떻게 해야 되나요?

1개의 답글