-
Notifications
You must be signed in to change notification settings - Fork 90
Description
Hi there,
I have the following use case:
I want to use useAsyncFetch in a function component with formik.
That looks something like this:
function MyForm() {
const { run } = useFetch(
"https://example.com",
{ method: "POST" },
{ defer: true }
);
return (
<div>
<h1>My Form</h1>
<Formik
initialValues={{ name: "jared" }}
onSubmit={(values, actions) => {
console.log('submitting', values)
// I want to submit here
run({ body: JSON.stringify(values) } /* this is currently not possible */).then(() =>
actions.setSubmitting(false)
);
}}
render={props => (
<form onSubmit={props.handleSubmit}>
<Field type="text" name="name" placeholder="Name" />
<button type="submit">Submit</button>
</form>
)}
/>
</div>
);
}But currently, that doesn't work, because I have no way of passing arguments into run that actually reflect in the fetch call - and since my values are only available within the onSubmit callback of formik, I have no way of accessing those in the outer scope where useFetch is called.
(Of course, this can be worked around by keeping init in a ref and modifying it before calling run, but that's really smelly)
So my suggestion would be to use the first argument of this function that is currently unused to allow passing an argument that will be spread over init, before the request is sent.
Would something like this be feasible? I'd be happy to do a PR if this is something you'd accept.