-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Description
Describe the problem
Using the new actions feature of SvelteKit, when loading the page the form
prop is set to null
. In my usecase I return an errors
object if some of the form fields don't pass the validation in the action.
To not having to deal with unnecessary if
checks or optional chainings, I'm setting errors
to an empty object when the page loads and form
is still null
.
<script>
export let form
$: ({ errors } = form || { errors: { } }
</script>
{#if errors.email}
invalid email address
{/if}
{#if form.errors.password} <!-- Uncaught TypeError: Cannot read properties of null (reading 'errors') -->
please enter a stronger password
{/if}
This works fine, if I only use the errors
object in that file. But if I accidentially access form
again, I'll get an error because form is still null
.
To not having the issue above I would need to set the default value like this:
<script>
export let form
$: form = form || { errors: { } }
</script>
But this requires me to write additional code.
Describe the proposed solution
form
should be undefined
and not null
to make it possible to set a fallback value like you would do in other Svelte
components:
<script>
export let form = { errors: { } }
$: ({ errors } = form
</script>
{#if errors.email}
invalid email address
{/if}
{#if form.errors.password} <!-- no error! -->
please enter a stronger password
{/if}
Alternatives considered
Leave it as it is.
Importance
would make my life easier
Additional Information
No response