File tree 7 files changed +71
-19
lines changed
7 files changed +71
-19
lines changed Original file line number Diff line number Diff line change @@ -70,15 +70,21 @@ function CreateForm({
70
70
>
71
71
< div >
72
72
< label htmlFor = "shipName" > Ship Name</ label >
73
- < input id = "shipName" type = "text" name = "name" />
73
+ < input id = "shipName" type = "text" name = "name" required />
74
74
</ div >
75
75
< div >
76
76
< label htmlFor = "topSpeed" > Top Speed</ label >
77
- < input id = "topSpeed" type = "number" name = "topSpeed" />
77
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
78
78
</ div >
79
79
< div >
80
80
< label htmlFor = "image" > Image</ label >
81
- < input id = "image" type = "file" name = "image" accept = "image/*" />
81
+ < input
82
+ id = "image"
83
+ type = "file"
84
+ name = "image"
85
+ accept = "image/*"
86
+ required
87
+ />
82
88
</ div >
83
89
< button type = "submit" > Create</ button >
84
90
</ form >
Original file line number Diff line number Diff line change @@ -61,15 +61,21 @@ function CreateForm({
61
61
>
62
62
< div >
63
63
< label htmlFor = "shipName" > Ship Name</ label >
64
- < input id = "shipName" type = "text" name = "name" />
64
+ < input id = "shipName" type = "text" name = "name" required />
65
65
</ div >
66
66
< div >
67
67
< label htmlFor = "topSpeed" > Top Speed</ label >
68
- < input id = "topSpeed" type = "number" name = "topSpeed" />
68
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
69
69
</ div >
70
70
< div >
71
71
< label htmlFor = "image" > Image</ label >
72
- < input id = "image" type = "file" name = "image" accept = "image/*" />
72
+ < input
73
+ id = "image"
74
+ type = "file"
75
+ name = "image"
76
+ accept = "image/*"
77
+ required
78
+ />
73
79
</ div >
74
80
< button type = "submit" > Create</ button >
75
81
</ form >
Original file line number Diff line number Diff line change @@ -61,15 +61,21 @@ function CreateForm({
61
61
>
62
62
< div >
63
63
< label htmlFor = "shipName" > Ship Name</ label >
64
- < input id = "shipName" type = "text" name = "name" />
64
+ < input id = "shipName" type = "text" name = "name" required />
65
65
</ div >
66
66
< div >
67
67
< label htmlFor = "topSpeed" > Top Speed</ label >
68
- < input id = "topSpeed" type = "number" name = "topSpeed" />
68
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
69
69
</ div >
70
70
< div >
71
71
< label htmlFor = "image" > Image</ label >
72
- < input id = "image" type = "file" name = "image" accept = "image/*" />
72
+ < input
73
+ id = "image"
74
+ type = "file"
75
+ name = "image"
76
+ accept = "image/*"
77
+ required
78
+ />
73
79
</ div >
74
80
{ /* 🐨 create a CreateButton component and move this into it */ }
75
81
< button type = "submit" > Create</ button >
Original file line number Diff line number Diff line change @@ -62,15 +62,21 @@ function CreateForm({
62
62
>
63
63
< div >
64
64
< label htmlFor = "shipName" > Ship Name</ label >
65
- < input id = "shipName" type = "text" name = "name" />
65
+ < input id = "shipName" type = "text" name = "name" required />
66
66
</ div >
67
67
< div >
68
68
< label htmlFor = "topSpeed" > Top Speed</ label >
69
- < input id = "topSpeed" type = "number" name = "topSpeed" />
69
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
70
70
</ div >
71
71
< div >
72
72
< label htmlFor = "image" > Image</ label >
73
- < input id = "image" type = "file" name = "image" accept = "image/*" />
73
+ < input
74
+ id = "image"
75
+ type = "file"
76
+ name = "image"
77
+ accept = "image/*"
78
+ required
79
+ />
74
80
</ div >
75
81
< CreateButton />
76
82
</ form >
Original file line number Diff line number Diff line change @@ -5,7 +5,23 @@ actually has one more step: loading the newly created ship.
5
5
6
6
We want to update the message of our submit button to indicate which step we're
7
7
on in the process. But updating state during a transition (like that in our form
8
- action) isn't possible. So we need to use ` useOptimistic ` .
8
+ action) isn't possible. So we need to use ` useOptimistic ` . Here's an example of
9
+ how you might do this:
10
+
11
+ ``` tsx
12
+ <form
13
+ action = { async formData => {
14
+ setMessage (' Creating order...' )
15
+ const order = await createOrder (formData )
16
+ setMessage (' Creating payment...' )
17
+ const payment = await createPayment (formData , order )
18
+ setMessage (' Almost done!' )
19
+ await sendThankYou (order , payment )
20
+ }}
21
+ >
22
+ { /* ...*/ }
23
+ </form >
24
+ ```
9
25
10
26
So please add a ` useOptimistic ` for a "message" variable which we'll use to
11
27
update the submit button message. You can initialize it to "Create" and then
Original file line number Diff line number Diff line change @@ -66,15 +66,21 @@ function CreateForm({
66
66
>
67
67
< div >
68
68
< label htmlFor = "shipName" > Ship Name</ label >
69
- < input id = "shipName" type = "text" name = "name" />
69
+ < input id = "shipName" type = "text" name = "name" required />
70
70
</ div >
71
71
< div >
72
72
< label htmlFor = "topSpeed" > Top Speed</ label >
73
- < input id = "topSpeed" type = "number" name = "topSpeed" />
73
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
74
74
</ div >
75
75
< div >
76
76
< label htmlFor = "image" > Image</ label >
77
- < input id = "image" type = "file" name = "image" accept = "image/*" />
77
+ < input
78
+ id = "image"
79
+ type = "file"
80
+ name = "image"
81
+ accept = "image/*"
82
+ required
83
+ />
78
84
</ div >
79
85
{ /* 🐨 pass the message as children */ }
80
86
< CreateButton />
Original file line number Diff line number Diff line change @@ -66,15 +66,21 @@ function CreateForm({
66
66
>
67
67
< div >
68
68
< label htmlFor = "shipName" > Ship Name</ label >
69
- < input id = "shipName" type = "text" name = "name" />
69
+ < input id = "shipName" type = "text" name = "name" required />
70
70
</ div >
71
71
< div >
72
72
< label htmlFor = "topSpeed" > Top Speed</ label >
73
- < input id = "topSpeed" type = "number" name = "topSpeed" />
73
+ < input id = "topSpeed" type = "number" name = "topSpeed" required />
74
74
</ div >
75
75
< div >
76
76
< label htmlFor = "image" > Image</ label >
77
- < input id = "image" type = "file" name = "image" accept = "image/*" />
77
+ < input
78
+ id = "image"
79
+ type = "file"
80
+ name = "image"
81
+ accept = "image/*"
82
+ required
83
+ />
78
84
</ div >
79
85
< CreateButton > { message } </ CreateButton >
80
86
</ form >
You can’t perform that action at this time.
0 commit comments