import { useState, useCallback } from 'react'; export function useAction<TInput, TOutput>( action: (input: TInput) => Promise<TOutput> ) { // TODO: data, error, pending 상태를 useState로 관리하세요. // TODO: run(input) 함수는: // 1) pending=true, error=null, data=null 로 초기화 // 2) action(input)을 await // 3) 성공 시 data 설정, 실패 시 error 설정 // 4) finally에서 pending=false const run = useCallback(async (_input: TInput) => { // TODO }, [action]); return { run, data: null as TOutput | null, error: null as Error | null, pending: false, }; }
Tests