Search
Duplicate

[TypeScript] useState, useEffect, useCallback 등 React Hooks가 받는 Type을 알아보자

간단소개
React Hooks과 TypeScript
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
React
TypeScript
Scrap
태그
9 more properties
React Hooks들은 제네릭 타입 함수로 구현되어있다. 각 hook들이 어떤 타입들을 받는지 알아보자.

useState

export function useState<S>( initialState: (() => S) | S, ): [S, Dispatch<BasicStateAction<S>>] { const dispatcher = resolveDispatcher(); return dispatcher.useState(initialState); }
TypeScript
복사
Example
initialState가 들어가 있으면 타입유추가 가능하기 때문에 타입을 생략하고 작성하여도 된다.
const [data, setData] = useState<string>('') const [data, setData] = useState('') const [data, setData] = useState([]) // 빈배열을 넣으면 타입이 Object로 나온다
TypeScript
복사

useEffect

export function useEffect( create: () => (() => void) | void, deps: Array<mixed> | void | null, ): void { const dispatcher = resolveDispatcher(); return dispatcher.useEffect(create, deps); }
TypeScript
복사
Example
deps에는 다양한 타입이 들어올 수 있다.
TypeScript
복사

useRef

export function useRef<T>(initialValue: T): {|current: T|} { const dispatcher = resolveDispatcher(); return dispatcher.useRef(initialValue); }
TypeScript
복사

useCallback, useMemo

export function useCallback<T>( callback: T, deps: Array<mixed> | void | null, ): T { const dispatcher = resolveDispatcher(); return dispatcher.useCallback(callback, deps); } export function useMemo<T>( create: () => T, deps: Array<mixed> | void | null, ): T { const dispatcher = resolveDispatcher(); return dispatcher.useMemo(create, deps); }
TypeScript
복사