next-form-action
Version:
A TypeScript library for handling server actions in Next.js with type-safe error handling and callbacks
32 lines • 997 B
JavaScript
"use client";
import { useRouter } from "next/navigation";
import { useState, useTransition } from "react";
export function useAction(action, options = {}) {
const router = useRouter();
const [isPending, startTransition] = useTransition();
const [state, setState] = useState();
const dispatch = (data) => {
startTransition(async () => {
const result = await action(data);
setState(result);
if (result.success === true && options.onSuccess) {
await options.onSuccess(result);
}
else if (result.success === false && options.onError) {
await options.onError(result);
}
if (result.redirect) {
router.push(result.redirect);
}
if (result.refresh) {
router.refresh();
}
});
};
return {
dispatch,
state,
isPending,
};
}
//# sourceMappingURL=index.js.map