ArrayControlState
Defined in: platforms/react/hooks/types.ts:289
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΡΠΌΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Ρ ΡΠΊΠΎΠΌ useFormControl Π΄Π»Ρ FormArray.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°: Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π΄Π»ΠΈΠ½Ρ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈ ΡΠ»Π°Π³ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Exampleβ
interface Phone {
type: string;
number: string;
}
interface Props {
control: FormArray<Phone>;
}
function PhoneList({ control }: Props) {
const { length, valid } = useFormControl(control);
return (
<div>
{control.map((item, index) => (
<PhoneItem
key={control.keyAt(index)}
control={item}
onRemove={() => control.removeAt(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 issues</p>}
</div>
);
}
Seeβ
- useFormControl - Ρ ΡΠΊ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
- FieldControlState - ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ
Type Parametersβ
Tβ
T
Π’ΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΡΠΎΡΠΌΡ)
Propertiesβ
dirtyβ
dirty: boolean;
Defined in: platforms/react/hooks/types.ts:383
Π€Π»Π°Π³ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
true ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΊΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π° ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ (push, removeAt,
move, setValueβ¦). ΠΠ°ΠΊ Ρ ΠΏΠΎΠ»Ρ, Π·Π°ΠΏΠΈΡΡ Π² ΠΌΠΎΠ΄Π΅Π»Ρ (Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
) ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΡΠ°Π²
Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ»Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ ΡΡΠΈΡΠ°ΡΡΡΡ; ΡΠ½ΠΈΠΌΠ°Π΅Ρ reset.
Exampleβ
const { dirty } = useFormControl(itemsArray);
return (
<div>
{dirty && <span>* Unsaved changes</span>}
<button disabled={!dirty}>Save</button>
</div>
);
disabledβ
disabled: boolean;
Defined in: platforms/react/hooks/types.ts:400
Π€Π»Π°Π³ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
true ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΠΊΠ»ΡΡΡΠ½ (FormArray.disable()), Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅ΡΠ΅Π·
ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ disable ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π³ΡΡΠΏΠΏΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ UI-Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ/ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΡΠΊΡΡΡΠ½ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ.
Exampleβ
const { disabled } = useFormControl(itemsArray);
return <button disabled={disabled} onClick={() => control.push()}>Add</button>;
invalidβ
invalid: boolean;
Defined in: platforms/react/hooks/types.ts:357
Π€Π»Π°Π³ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ.
true ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅.
issuesβ
issues: ValidationIssue[];
Defined in: platforms/react/hooks/types.ts:339
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°: ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ (ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° ΡΡΡΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°) ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΡΡΠΎΠΊ.
Exampleβ
// ΠΡΠ°Π²ΠΈΠ»ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° β Π² ΡΡ
Π΅ΠΌΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ
validate(model.$.phones, [minLength(1, { code: 'phones.minLength' })]);
// Π ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅
const { issues } = useFormControl(phonesArray);
// Π΄Π»Ρ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° issues ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 'phones.minLength'
lengthβ
length: number;
Defined in: platforms/react/hooks/types.ts:318
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ value.length, Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
Exampleβ
const { length } = useFormControl(itemsArray);
return (
<div>
<span>Items: {length}</span>
{length >= 10 && <span>Maximum reached</span>}
</div>
);
ownIssuesβ
ownIssues: ValidationIssue[];
Defined in: platforms/react/hooks/types.ts:345
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° β ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° Π΅Π³ΠΎ ΡΡΡΠΊΠ΅ (minLength ΠΈ Ρ.ΠΏ.), Π±Π΅Π·
Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ ΡΡΡΠΎΠΊ. ΠΡ
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° (FieldArray.Error).
pendingβ
pending: boolean;
Defined in: platforms/react/hooks/types.ts:324
Π€Π»Π°Π³ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ.
true ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
touchedβ
touched: boolean;
Defined in: platforms/react/hooks/types.ts:363
Π€Π»Π°Π³ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
true ΠΏΠΎΡΠ»Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π»ΡΠ±ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°.
validβ
valid: boolean;
Defined in: platforms/react/hooks/types.ts:351
Π€Π»Π°Π³ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π²ΡΠ΅Ρ
Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
true ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π²ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π°Π»ΠΈΠ΄Π½Ρ.
valueβ
value: T[];
Defined in: platforms/react/hooks/types.ts:300
ΠΠ°ΡΡΠΈΠ² ΡΠ΅ΠΊΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Exampleβ
const { value } = useFormControl(phonesArray);
console.log(value);
// [{ type: 'mobile', number: '+1234567890' }, { type: 'home', number: '+0987654321' }]