ArrayControlState
Defined in: hooks/types.ts:255
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΡΠΌΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Ρ ΡΠΊΠΎΠΌ useFormControl Π΄Π»Ρ ArrayNode.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°: Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π΄Π»ΠΈΠ½Ρ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈ ΡΠ»Π°Π³ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Exampleβ
interface Phone {
type: string;
number: string;
}
interface Props {
control: ArrayNode<Phone>;
}
function PhoneList({ control }: Props) {
const { length, valid } = useFormControl(control);
return (
<div>
{control.map((item, index) => (
<PhoneItem
key={item.id}
control={item}
onRemove={() => control.remove(index)}
/>
))}
{length === 0 && <p>No phones added</p>}
<button onClick={() => control.push({ type: 'mobile', number: '' })}>
Add Phone
</button>
{!valid && <p className="error">Please fix phone errors</p>}
</div>
);
}
Seeβ
- useFormControl - Ρ ΡΠΊ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
- FieldControlState - ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ
Type Parametersβ
Tβ
T
Π’ΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΡΠΎΡΠΌΡ)
Propertiesβ
dirtyβ
dirty: boolean;
Defined in: hooks/types.ts:345
Π€Π»Π°Π³ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
true ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ.
Exampleβ
const { dirty } = useFormControl(itemsArray);
return (
<div>
{dirty && <span>* Unsaved changes</span>}
<button disabled={!dirty}>Save</button>
</div>
);
errorsβ
errors: ValidationError[];
Defined in: hooks/types.ts:309
ΠΠ°ΡΡΠΈΠ² ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Exampleβ
// ΠΠ°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π°
validators.apply(phonesArray, {
validator: (phones) => phones.length >= 1,
message: 'At least one phone required'
});
// Π ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅
const { errors } = useFormControl(phonesArray);
// errors ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ "At least one phone required" Π΅ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΡΡ
invalidβ
invalid: boolean;
Defined in: hooks/types.ts:321
Π€Π»Π°Π³ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ.
true ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅.
lengthβ
length: number;
Defined in: hooks/types.ts:284
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ value.length, Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
Exampleβ
const { length } = useFormControl(itemsArray);
return (
<div>
<span>Items: {length}</span>
{length >= 10 && <span>Maximum reached</span>}
</div>
);
pendingβ
pending: boolean;
Defined in: hooks/types.ts:290
Π€Π»Π°Π³ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ.
true ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
touchedβ
touched: boolean;
Defined in: hooks/types.ts:327
Π€Π»Π°Π³ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
true ΠΏΠΎΡΠ»Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π»ΡΠ±ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°.
validβ
valid: boolean;
Defined in: hooks/types.ts:315
Π€Π»Π°Π³ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π²ΡΠ΅Ρ
Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
true ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π²ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π°Π»ΠΈΠ΄Π½Ρ.
valueβ
value: T[];
Defined in: hooks/types.ts:266
ΠΠ°ΡΡΠΈΠ² ΡΠ΅ΠΊΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Exampleβ
const { value } = useFormControl(phonesArray);
console.log(value);
// [{ type: 'mobile', number: '+1234567890' }, { type: 'home', number: '+0987654321' }]