Nested Object

So far we've just put the image information as properties on our NoteEditorSchema, but the id, file, and altText fields are really all just part of a single object: An image. So it would be better to represent this as a nested set of field properties under the NoteEditorSchema under image.
However, because forms don't support nested objects, we'll need to use a utility from Conform to help us out. Here's an example that resembles what you'll be doing:
// example inspired from the Conform docs
import {
	useForm,
	useFieldset,
	conform,
	type FieldConfig,
} from '@conform-to/react'

function Example() {
	const [form, fields] = useForm<Schema>({
		// ... config stuff including the schema
	})

	return (
		<form {...form.props}>
			<AddressFields config={fields.address} />
		</form>
	)
}

function AddressFields({ config }: { config: FieldConfig<Address> }) {
	const ref = useRef<HTMLFieldSetElement>(null)
	const fields = useFieldset(ref, config)
	return (
		<fieldset ref={ref}>
			<input {...conform.input(fields.street)} />
			<input {...conform.input(fields.zipcode)} />
			<input {...conform.input(fields.city)} />
			<input {...conform.input(fields.country)} />
		</fieldset>
	)
}
We'll also get our type by using Zod's inference utility:
const RocketSchema = z.object({
	// ...
})
type RocketType = z.infer<typeof RocketSchema>

function RocketFields({ config }: { config: FieldConfig<RocketType> }) {
	// ...
}
So, fundamentally, we want to make this change:
{
	title: string
	content: string
	imageId: string
	file: File
	altText: string
	image: {
		id: string
		file: File
		altText: string
	}
}
And we want that hooked up to our form. That should be enough to get you going!
Login to get access to the exclusive discord channel.
  • general
    Migration to Vite: Server-only module referenced by client
    Fabian ๐ŸŒŒ:
    Hi, I'm working on migrating to Vite following the remix docs (https://remix.run/docs/en/main/guides...
    1 ยท 19 days ago
  • general
    Remix Vite Plugin
    Binalfew ๐Ÿš€ ๐ŸŒŒ:
    <@105755735731781632> Now that remix officially supports vite (though not stable) what does it mean...
    • โœ…1
    3 ยท a year ago
  • general
    Welcome to EpicWeb.dev! Say Hello ๐Ÿ‘‹
    Kent C. Dodds โ—† ๐Ÿš€๐Ÿ†๐ŸŒŒ:
    This is the first post of many hopefully!
    • 17
    78 ยท a year ago
  • general
    ๐Ÿ”ญfoundations
    Solutions video on localhost:5639 ?
    quang ๐Ÿš€ ๐ŸŒŒ:
    Hi, so I'm having a hard time navigating (hopefully will be better with time) The nav on epicweb.de...
    • โœ…1
    9 ยท 10 months ago
  • ๐Ÿ“forms
    Loading into disk
    DiogoVaz ๐ŸŒŒ:
    I am going through the File Upload section and I completely understand the benefits of loading the a...
    • โœ…1
    2 ยท 2 months ago
  • general
    Epicshop is now social and mobile friendly!
    Kent C. Dodds โ—† ๐Ÿš€๐Ÿ†๐ŸŒŒ:
    I'm excited to announce that now the Epic Web workshops are mobile friendly! https://foundations.ep...
    • ๐ŸŽ‰2
    0 ยท 3 months ago
  • ๐Ÿ’พdata
    ๐Ÿ“forms
    ๐Ÿ”ญfoundations
    How can I do this?
    silvanet ๐Ÿš€ ๐ŸŒŒ:
    Viewing the Intro (from the Workshop) for Mutations, the course has an embedded video where Kent exp...
    • โœ…1
    3 ยท 4 months ago
  • ๐Ÿ’พdata
    ๐Ÿ“forms
    ๐Ÿ”ญfoundations
    Reviewing foundations, Mutations, Actions
    silvanet ๐Ÿš€ ๐ŸŒŒ:
    Forgive me for this. I went over the file size limit. I don't want to sign up for being able to exce...
    2 ยท 4 months ago
  • ๐Ÿ’พdata
    general
    ๐Ÿ“forms
    ๐Ÿ”ญfoundations
    double underscore?
    trendaaang ๐ŸŒŒ:
    What with the `__note-editor.tsx`? I don't see that in the Remix docs and I don't remember Kent talk...
    • โœ…1
    2 ยท 4 months ago
  • ๐Ÿ“forms
    Unable to start the playground
    Payapula ๐Ÿš€ ๐ŸŒŒ:
    Today morning I have updated the workshop for web-form - https://github.com/epicweb-dev/web-forms/co...
    • โœ…1
    16 ยท 5 months ago
  • ๐Ÿ”ญfoundations
    ๐Ÿ’พdata
    general
    ๐Ÿ“forms
    ๐Ÿ”auth
    Native Logging
    trendaaang ๐ŸŒŒ:
    I was thinking that it could be useful to log every CRUD operation to help track down errors. Is tha...
    • โœ…1
    6 ยท 5 months ago
  • ๐Ÿ“forms
    File upload `unstable_parseMultipartFormData` vs `File`
    QzCurious ๐ŸŒŒ:
    I'd like to ask why we want to use `unstable_parseMultipartFormData` at first place? It seems to me ...
    • โœ…1
    8 ยท 5 months ago
  • ๐Ÿ“forms
    Purpose of conform.fieldset() in the excercise
    blue_cat_blues ๐ŸŒŒ ๐Ÿš€:
    In the solution for Web forms 05/01 (complex structures/ nested objects) there is a call to `conform...
    • โœ…1
    4 ยท 5 months ago
  • ๐Ÿ“forms
    I think conform removed their docs for react
    Antonio ๐Ÿš€ ๐ŸŒŒ:
    Hey I'm watching the Forms course and on /03/03 seems like the https://conform.guide/api/react link ...
    • โœ…1
    15 ยท 6 months ago
  • ๐Ÿ’พdata
    ๐Ÿ“forms
    Issues with child routes when loading a modal with actions (server/client)
    OtterlyPunk:
    I've set up a mini-project to go through the first set of videos and I'm having issues with the form...
    • โœ…1
    7 ยท 6 months ago
  • general
    The video play is pretty laggy currently
    QzCurious ๐ŸŒŒ:
    I thought I should tag you for this <@105755735731781632>. Please take a look if something wrong.
    • โœ…2
    9 ยท 6 months ago
  • general
    New Workshop Scheduled
    Kent C. Dodds โ—† ๐Ÿš€๐Ÿ†๐ŸŒŒ:
    Hey Epic Web devs! I wanted to let you know before everyone else on here: https://www.epicweb.dev/ev...
    • 2
    0 ยท 6 months ago
  • ๐Ÿ“forms
    aria-invalid="false"
    Antonio ๐Ÿš€ ๐ŸŒŒ:
    Hey I'm currently going through the Accessibility module on the forms workshop, and in the exercise ...
    • โœ…1
    14 ยท 6 months ago
  • ๐Ÿ“forms
    Upgrade Conform v1
    JsPark ๐ŸŒŒ ๐Ÿš€:
    Are you planning to upgrade the conform library used in the web-forms repository to v1? The exercise...
    • โœ…1
    1 ยท 7 months ago
  • general
    Deploying an exercise
    Khoi ๐Ÿš€ ๐ŸŒŒ:
    Dear <@105755735731781632> , First of all, I really appreciate your effort in building this EPIC cou...
    • โœ…1
    1 ยท 6 months ago
  • general
    "Start App" throws error: Error: Cannot add empty string to PrefixLookupTrie
    Martin ๐ŸŒŒ:
    โœ— npm run start > start > kcdshop start [playground:4000] [playground:4000] > dev [playground:4000...
    • โœ…1
    7 ยท 10 months ago
  • general
    ๐Ÿ“forms
    Can't start the playground
    trendaaang ๐ŸŒŒ:
    Been a minute since I last worked on this course. Just tried running the app and was notified that t...
    • โœ…1
    3 ยท 7 months ago
  • ๐Ÿ’พdata
    ๐Ÿ“forms
    Getting a TS error that is not present in the course files
    OtterlyPunk:
    So I'm working in parallel and I'm feeling the problem is I'm using a new version of something in my...
    • โœ…1
    12 ยท 6 months ago
  • general
    Question about the Workshop App tabs
    sjollivier ๐ŸŒŒ:
    Just started the course. I might have missed this in the Getting Started video, but how should I be ...
    • โœ…1
    1 ยท 7 months ago