(
props: UseFieldArrayProps<
TFieldValues,
TFieldArrayName,
TKeyName,
TTransformedValues
>,
)
| 80 | * ``` |
| 81 | */ |
| 82 | export function useFieldArray< |
| 83 | TFieldValues extends FieldValues = FieldValues, |
| 84 | TFieldArrayName extends FieldArrayPath<TFieldValues> = |
| 85 | FieldArrayPath<TFieldValues>, |
| 86 | TKeyName extends string = 'id', |
| 87 | TTransformedValues = TFieldValues, |
| 88 | >( |
| 89 | props: UseFieldArrayProps< |
| 90 | TFieldValues, |
| 91 | TFieldArrayName, |
| 92 | TKeyName, |
| 93 | TTransformedValues |
| 94 | >, |
| 95 | ): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> { |
| 96 | const formControl = useFormControlContext< |
| 97 | TFieldValues, |
| 98 | any, |
| 99 | TTransformedValues |
| 100 | >(); |
| 101 | const { |
| 102 | control = formControl, |
| 103 | name, |
| 104 | keyName = 'id', |
| 105 | disabled, |
| 106 | shouldUnregister, |
| 107 | rules, |
| 108 | } = props; |
| 109 | const [fields, setFields] = React.useState(control._getFieldArray(name)); |
| 110 | const ids = React.useRef<string[]>( |
| 111 | control._getFieldArray(name).map(generateId), |
| 112 | ); |
| 113 | |
| 114 | const _actioned = React.useRef(false); |
| 115 | |
| 116 | if (!disabled) { |
| 117 | control._names.array.add(name); |
| 118 | } |
| 119 | |
| 120 | React.useMemo( |
| 121 | () => |
| 122 | !disabled && |
| 123 | rules && |
| 124 | fields.length >= 0 && |
| 125 | (control as Control<TFieldValues, any, TTransformedValues>).register( |
| 126 | name as FieldPath<TFieldValues>, |
| 127 | rules as RegisterOptions<TFieldValues>, |
| 128 | ), |
| 129 | [control, name, fields.length, rules, disabled], |
| 130 | ); |
| 131 | |
| 132 | useIsomorphicLayoutEffect(() => { |
| 133 | if (disabled) { |
| 134 | return; |
| 135 | } |
| 136 | |
| 137 | return control._subjects.array.subscribe({ |
| 138 | next: ({ |
| 139 | values, |
searching dependent graphs…