--- title: useSubmit new: true --- # `useSubmit` The imperative version of `
` that lets you, the programmer, submit a form instead of the user. This feature only works if using a data router, see [Picking a Router][pickingarouter] For example, submitting the form every time a value changes inside the form: ```tsx [8] import { useSubmit, Form } from "react-router-dom"; function SearchField() { let submit = useSubmit(); return ( { submit(event.currentTarget); }} >
); } ``` This can also be useful if you'd like to automatically sign someone out of your website after a period of inactivity. In this case, we've defined inactivity as the user hasn't navigated to any other pages after 5 minutes. ```tsx lines=[1,10,15] import { useSubmit, useLocation } from "react-router-dom"; import { useEffect } from "react"; function AdminPage() { useSessionTimeout(); return
{/* ... */}
; } function useSessionTimeout() { const submit = useSubmit(); const location = useLocation(); useEffect(() => { const timer = setTimeout(() => { submit(null, { method: "post", action: "/logout" }); }, 5 * 60_000); return () => clearTimeout(timer); }, [submit, location]); } ``` ## Submit target The first argument to submit accepts many different values. You can submit any form or form input element: ```tsx // input element events submit(event.currentTarget)} />; // React refs let ref = useRef();