Errors
Normally action errors are handled by the onActionError
callback on the page that initiates the navigation.
There are some use cases where the initial request for a page is already a POST
request, so there is no page yet to handle the action error with the callback.
Consider a form with a target="_blank"
and a method="post"
. The target
will cause the navigation to open in a new window, making this forms' POST
navigation the first request of the new browser window.
A useActionError hook is available that returns this initial action error, while rendering the target page itself.
import { useActionError } from 'react-sprout';
let actionError = useActionError();
To present all action errors uniformly, the useActionError
hook and the onActionError
callback must be combined.
function Route() {
let actionError = useActionError()
let [error, setError] = useState(actionError)
function handleActionError(event, error) {
setError(error)
}
let errorElement
if (error) {
errorElement = <Error>{error}</Error>
}
return <>
{errorElement}
<Form method="post" onActionError={handleActionError}>
...
</Form>
<>
}