T
TanStack5w ago
plain-purple

Differential validation in onSubmit depending on onSubmitMeta

Hi! I'm using the onSubmitMeta to include different submitActions for onSubmit: "autosave", "publish" and "unpublish". This gives me the ability to use the isSubmitting and keep it within the form, but I would like to have different validation schemas for the different submitActions, as the user should be able to save their draft without it necessarily being complete, but not be able to publish until all the pieces are in place. I have tried moving the validation to within the onSubmit function and the switch cases, but I'm unsure of how to transfer the validation response to the form so that I can access validation errors from the fields (like it automatically does with the validators property). Is there any native way for me to go about this or do I have to get creative?
No description
9 Replies
correct-apricot
correct-apricot5w ago
if you need to forward the validation errors to the fields, then the function's purpose is to be a validator. This logic should be moved into validators.onSubmitAsync. If onSubmitAsync passes successfully, it will be considered a successful submission and trigger whatever's left in onSubmit (or omit it entirely)
plain-purple
plain-purpleOP5w ago
But with validators.onSubmitAsync, since every submission behavior is in onSubmit all my submitActions will still have the same validation requirements, right? I would like for the autosave submitAction to have a more forgiving schema since it's essentially saving a draft while publish needs the completed form. Can I pass the submitMeta into the validator in some way?
correct-apricot
correct-apricot5w ago
hmm ... currently, you don't have access to meta in onSubmitAsync, right?
plain-purple
plain-purpleOP5w ago
It doesn't seem like it, no.
correct-apricot
correct-apricot5w ago
that's unfortunate. We've planned on adding a createError function to onSubmit, but regardless of that planned feature, I feel like validators.onSubmit and validators.onSubmitAsync should have access to the meta. Could you create a feature request for it on GitHub? If not, I can create one later
plain-purple
plain-purpleOP5w ago
I'll create one, thank you for the assistance!
conscious-sapphire
conscious-sapphire3w ago
When you say feature req, would that be an idea or an issue with feature title/enhancement tag? I see that we currently have an idea for it, but wonder if an issue would be better for tracking?
correct-apricot
correct-apricot3w ago
the idea section for discussions is best for this. Issues should ideally only be for issues that need resolving that being said, there's lots of feature requests on the issues section. The tag is meant to help with determining what's what, but it's more work than just using the intended path
conscious-sapphire
conscious-sapphire3w ago
yea that's what made me unsure, but all is well then, thanks!

Did you find this page helpful?