Field takes the same props as on the web (label, hint, error, required, span). It puts a label above one control and the error and hint under it, and hands the control what a screen reader needs: the label as its name, the error and hint as its hint, aria-required, and error so the control draws itself invalid. See the web Field for the same component in the browser.
The control's own props win, so <Input error={false} /> inside a Field with an error stays unmarked. For a custom control, pass a function: it receives the props to spread.
- One label. When the control's own label repeats the Field's, the control drops it, so <Field label="Space"><Select label="Space" /></Field> shows "Space" once. A Select or DateInput then uses the Field's label as its sheet title.
- controlId is accepted and ignored: React Native links the label to the control through props, not ids.
- The error is announced when it appears (a polite live region).