useArrayField
A hook that provides array manipulation functions and optimizations for an array field. This is the array-optimized version of useObjectField
. This hook only causes a rerender when the array size changes (this is why values.map((e) => ...)
works when adding/removing a value).
This hook must be called, unconditionally, at the start of your component, just like the normal React hooks.
If your array field can/will be null or undefined, you should use the ArrayField
component instead, which does not render when the array is null/undefined.
useArrayField(parentForm, nameOfArrayField)
Parameters
parentForm
(required)
The parent form which contains the array field to create a array child form for.
name
(required)
The name of the array field in the parent form.
Returns
An object, containing the following fields:
form
: The child form associated with this array. Pass this to this child forms and input elements.values
: The array, you should{map((e) => ...)}
this.setValues(values)
: A function to update all the array values at once.
The object also contains helper functions to quickly manipulate the array field:
remove(index)
: Function that removes a specific item at index in the array.clear()
: Function that clears the array.move(from, to)
: Function that moves an item in the arrayswap(index, newIndex)
: Function that swaps 2 items in the array.append(value)
: Function that appends an item to the end of the array.
Usage
See Array fields for useful examples.