typescript

useState가 반환하는 setState의 타입은 어떻게 설정할까?

냠냠맨 2023. 5. 14. 19:56

👻useState의 setState 타입을 어떻게 설정해야할까?

이런 부분들은 이해가 어렵다기보다는

자주 사용하지 않다보면 기억이 안나는 경우가 많은 것 같습니다.

간단하게 예제를 작성 하면서 알아보도록 하겠습니다.

import {useState} from 'react'
import HiReactItems from '대충 경로'
const HiReact = () => {
  const [state, setState] = useState(false)
  
  return (
    <HiReactItems setState={setState} />
  )
}

이렇게 작성은 해두었는데... 이걸 쉽게 생각을해서 타입을 받는다 치면

interface StateProps {
  setState: (state:boolean) => void
}

이렇게 작성을 할 수 있겠죠?

하지만 좀 더 타입을 멋지게 작성을 하면 이렇게 작성을 할 수 있습니다.

import { Dispatch, SetStateAction } from 'react';

이 두 타입을 react에서 import해올 수 있습니다.

그냥 마음 편하게 구조분해할당을 하는게 아니라 react에서 제공하는 객체를 전부 받아오셔도 상관없습니다.

interface Props {
	setState: Dispatch<SetStateAction<boolean>>;
}

Dispatch의 제네릭으로 SetStateAction을 전달하고

SetStateAction의 제네릭으로 내가 사용하는 useState의 상태 타입을 전달해주면 됩니다.

반응형