From 03ba59c3ac75c4708569fd6cca290eb45a61a4a5 Mon Sep 17 00:00:00 2001 From: Ray Zane Date: Wed, 19 Aug 2020 13:50:51 -0400 Subject: [PATCH] Avoid double submission --- src/useSubmit.ts | 4 ++++ test/useSubmit.test.ts | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/useSubmit.ts b/src/useSubmit.ts index 9b5c913..271d9fe 100644 --- a/src/useSubmit.ts +++ b/src/useSubmit.ts @@ -29,6 +29,10 @@ export function useSubmit( event.stopPropagation(); } + if (form.isSubmitting) { + return; + } + form.setSubmitting(true); try { diff --git a/test/useSubmit.test.ts b/test/useSubmit.test.ts index 119ee0a..b7570c6 100644 --- a/test/useSubmit.test.ts +++ b/test/useSubmit.test.ts @@ -81,3 +81,11 @@ test("prevents default and stops propagation", async () => { expect(event.preventDefault).toHaveBeenCalled(); expect(event.stopPropagation).toHaveBeenCalled(); }); + +test("makes no attempt to submit when already submitting", async () => { + const form: any = { isSubmitting: true }; + const submit = jest.fn(); + const onSubmit = renderHook(() => useSubmit(form, submit)); + await onSubmit.result.current(); + expect(submit).not.toHaveBeenCalled(); +});