Skip to content

Commit 858201b

Browse files
authored
Merge branch 'main' into use_field_configurations
2 parents 98ea182 + 281075c commit 858201b

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

docs/assets/react_form_composability.svg

Lines changed: 1 addition & 1 deletion
Loading

docs/framework/react/community/balastrong-tutorial.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ Use schema libraries like zod, yup or valibot to define your schema with validat
3030
## 6. [Side effects and listeners](https://youtu.be/A-w2IG7DAso)
3131

3232
Similarly to field validators, you can attach events to field listeners and react to them, for example to reset a field when another one it depends on has changed. [Watch video (5:50)](https://youtu.be/A-w2IG7DAso)
33+
34+
## 7. [Composable Fields for Large Forms](https://youtu.be/YJ3rW85fnKo)
35+
36+
With the Composition APIs you can create reusable components, pre-bound and connected to a generic form context, heavily reducing repetitive code in all form instances across the app. This is especially useful for large forms with many fields. [Watch video (11:01)](https://youtu.be/YJ3rW85fnKo)

docs/framework/solid/guides/basic-concepts.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ Example:
242242
name={field().name}
243243
value={field().state.value}
244244
onBlur={field().handleBlur}
245-
onChange={(e) => field().handleChange(e.target.value)}
245+
onInput={(e) => field().handleChange(e.target.value)}
246246
/>
247247
<button
248248
type="button"
@@ -264,7 +264,7 @@ Example:
264264
name={field().name}
265265
value={field().state.value}
266266
onBlur={field().handleBlur}
267-
onChange={(e) => field().handleChange(e.target.value)}
267+
onInput={(e) => field().handleChange(e.target.value)}
268268
/>
269269
</div>
270270
)

docs/framework/solid/guides/validation.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Here is an example:
3131
name={field().name}
3232
value={field().state.value}
3333
type="number"
34-
onChange={(e) => field().handleChange(e.target.valueAsNumber)}
34+
onInput={(e) => field().handleChange(e.target.valueAsNumber)}
3535
/>
3636
{field().state.meta.errors ? (
3737
<em role="alert">{field().state.meta.errors.join(', ')}</em>
@@ -61,8 +61,8 @@ In the example above, the validation is done at each keystroke (`onChange`). If,
6161
type="number"
6262
// Listen to the onBlur event on the field
6363
onBlur={field().handleBlur}
64-
// We always need to implement onChange, so that TanStack Form receives the changes
65-
onChange={(e) => field().handleChange(e.target.valueAsNumber)}
64+
// We always need to implement onInput, so that TanStack Form receives the changes
65+
onInput={(e) => field().handleChange(e.target.valueAsNumber)}
6666
/>
6767
{field().state.meta.errors ? (
6868
<em role="alert">{field().state.meta.errors.join(', ')}</em>
@@ -93,8 +93,8 @@ So you can control when the validation is done by implementing the desired callb
9393
type="number"
9494
// Listen to the onBlur event on the field
9595
onBlur={field().handleBlur}
96-
// We always need to implement onChange, so that TanStack Form receives the changes
97-
onChange={(e) => field().handleChange(e.target.valueAsNumber)}
96+
// We always need to implement onInput, so that TanStack Form receives the changes
97+
onInput={(e) => field().handleChange(e.target.valueAsNumber)}
9898
/>
9999
{field().state.meta.errors ? (
100100
<em role="alert">{field().state.meta.errors.join(', ')}</em>
@@ -242,7 +242,7 @@ To do this, we have dedicated `onChangeAsync`, `onBlurAsync`, and other methods
242242
name={field().name}
243243
value={field().state.value}
244244
type="number"
245-
onChange={(e) => field().handleChange(e.target.valueAsNumber)}
245+
onInput={(e) => field().handleChange(e.target.valueAsNumber)}
246246
/>
247247
{field().state.meta.errors ? (
248248
<em role="alert">{field().state.meta.errors.join(', ')}</em>
@@ -274,7 +274,7 @@ Synchronous and Asynchronous validations can coexist. For example, it is possibl
274274
value={field().state.value}
275275
type="number"
276276
onBlur={field().handleBlur}
277-
onChange={(e) => field().handleChange(e.target.valueAsNumber)}
277+
onInput={(e) => field().handleChange(e.target.valueAsNumber)}
278278
/>
279279
{field().state.meta.errors ? (
280280
<em role="alert">{field().state.meta.errors.join(', ')}</em>

0 commit comments

Comments
 (0)