Skip to content

Commit 6cc7c9c

Browse files
committed
improvements
1 parent 535ef07 commit 6cc7c9c

File tree

7 files changed

+71
-19
lines changed

7 files changed

+71
-19
lines changed

exercises/03.optimistic/01.problem.optimistic/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,21 @@ function CreateForm({
7070
>
7171
<div>
7272
<label htmlFor="shipName">Ship Name</label>
73-
<input id="shipName" type="text" name="name" />
73+
<input id="shipName" type="text" name="name" required />
7474
</div>
7575
<div>
7676
<label htmlFor="topSpeed">Top Speed</label>
77-
<input id="topSpeed" type="number" name="topSpeed" />
77+
<input id="topSpeed" type="number" name="topSpeed" required />
7878
</div>
7979
<div>
8080
<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+
/>
8288
</div>
8389
<button type="submit">Create</button>
8490
</form>

exercises/03.optimistic/01.solution.optimistic/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,21 @@ function CreateForm({
6161
>
6262
<div>
6363
<label htmlFor="shipName">Ship Name</label>
64-
<input id="shipName" type="text" name="name" />
64+
<input id="shipName" type="text" name="name" required />
6565
</div>
6666
<div>
6767
<label htmlFor="topSpeed">Top Speed</label>
68-
<input id="topSpeed" type="number" name="topSpeed" />
68+
<input id="topSpeed" type="number" name="topSpeed" required />
6969
</div>
7070
<div>
7171
<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+
/>
7379
</div>
7480
<button type="submit">Create</button>
7581
</form>

exercises/03.optimistic/02.problem.form-status/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,21 @@ function CreateForm({
6161
>
6262
<div>
6363
<label htmlFor="shipName">Ship Name</label>
64-
<input id="shipName" type="text" name="name" />
64+
<input id="shipName" type="text" name="name" required />
6565
</div>
6666
<div>
6767
<label htmlFor="topSpeed">Top Speed</label>
68-
<input id="topSpeed" type="number" name="topSpeed" />
68+
<input id="topSpeed" type="number" name="topSpeed" required />
6969
</div>
7070
<div>
7171
<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+
/>
7379
</div>
7480
{/* 🐨 create a CreateButton component and move this into it */}
7581
<button type="submit">Create</button>

exercises/03.optimistic/02.solution.form-status/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,21 @@ function CreateForm({
6262
>
6363
<div>
6464
<label htmlFor="shipName">Ship Name</label>
65-
<input id="shipName" type="text" name="name" />
65+
<input id="shipName" type="text" name="name" required />
6666
</div>
6767
<div>
6868
<label htmlFor="topSpeed">Top Speed</label>
69-
<input id="topSpeed" type="number" name="topSpeed" />
69+
<input id="topSpeed" type="number" name="topSpeed" required />
7070
</div>
7171
<div>
7272
<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+
/>
7480
</div>
7581
<CreateButton />
7682
</form>

exercises/03.optimistic/03.problem.message/README.mdx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,23 @@ actually has one more step: loading the newly created ship.
55

66
We want to update the message of our submit button to indicate which step we're
77
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+
```
925

1026
So please add a `useOptimistic` for a "message" variable which we'll use to
1127
update the submit button message. You can initialize it to "Create" and then

exercises/03.optimistic/03.problem.message/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,21 @@ function CreateForm({
6666
>
6767
<div>
6868
<label htmlFor="shipName">Ship Name</label>
69-
<input id="shipName" type="text" name="name" />
69+
<input id="shipName" type="text" name="name" required />
7070
</div>
7171
<div>
7272
<label htmlFor="topSpeed">Top Speed</label>
73-
<input id="topSpeed" type="number" name="topSpeed" />
73+
<input id="topSpeed" type="number" name="topSpeed" required />
7474
</div>
7575
<div>
7676
<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+
/>
7884
</div>
7985
{/* 🐨 pass the message as children */}
8086
<CreateButton />

exercises/03.optimistic/03.solution.message/index.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,21 @@ function CreateForm({
6666
>
6767
<div>
6868
<label htmlFor="shipName">Ship Name</label>
69-
<input id="shipName" type="text" name="name" />
69+
<input id="shipName" type="text" name="name" required />
7070
</div>
7171
<div>
7272
<label htmlFor="topSpeed">Top Speed</label>
73-
<input id="topSpeed" type="number" name="topSpeed" />
73+
<input id="topSpeed" type="number" name="topSpeed" required />
7474
</div>
7575
<div>
7676
<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+
/>
7884
</div>
7985
<CreateButton>{message}</CreateButton>
8086
</form>

0 commit comments

Comments
 (0)