实现基本产品查询与页面展示

This commit is contained in:
2026-03-23 17:49:47 +08:00
parent c4e1da8912
commit 8751ac19a6
9 changed files with 236 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ import {
type Dispatch,
type SetStateAction,
useCallback,
useEffect,
useState,
} from "react"
import { toast } from "sonner"
@@ -49,3 +50,24 @@ export function useFetch<TArgs extends unknown[], TResult>(
],
)
}
type Action = <P extends unknown[], R>(...args: P) => Promise<R>
export function useAction(action: Action) {
const [status, setStatus] = useStatus()
const func = useCallback(
async (...args: Parameters<Action>) => {
try {
setStatus("load")
await action(...args)
setStatus("done")
} catch (e) {
setStatus("fail")
throw e
}
},
[action, setStatus],
)
return [func, status]
}