const [data, setData] = useState<ResponseType | null>(null)
const [isLoading, setLoading] = useState(false)
const [isRunning, setRunning] = useState(false)
const [err, setErr] = useState<Error | null>(null)
const execute = useMemo(
() => async (input: z.infer<InputType>) => {
setRunning(true)
try {
const result = await actionRef.current(input)
setData(result)
setRunning(false)
} catch (e) {
console.log(e)
setErr(e as Error)
setRunning(false)
}
},
[],
)
return {execute, data, isLoading, isRunning, err}
const [data, setData] = useState<ResponseType | null>(null)
const [isLoading, setLoading] = useState(false)
const [isRunning, setRunning] = useState(false)
const [err, setErr] = useState<Error | null>(null)
const execute = useMemo(
() => async (input: z.infer<InputType>) => {
setRunning(true)
try {
const result = await actionRef.current(input)
setData(result)
setRunning(false)
} catch (e) {
console.log(e)
setErr(e as Error)
setRunning(false)
}
},
[],
)
return {execute, data, isLoading, isRunning, err}