Skip to main content

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' }]