# Campo personalizado renderers

<PageBadges />

Custom renderers cambiar la presentación nativa sin mover los cálculos, la visibilidad,
requisitos, o validación fuera de `form0-core`.

## Anulaciones por formulario

Pase un mapa renderer directamente a `FormRenderer` para una forma aislada:

```jsx
import { FormRenderer } from "form0-react-native"
import { PhotoField } from "./photo-field.jsx"

;<FormRenderer schema={schema} renderers={{ PhotoField }} />
```

Un renderer recibe el campo y su estado de interacción evaluado:

```jsx
function PhotoField({ field, value, onChange, readOnly, required, error, inputProps }) {
  // Render application-owned capture, preview, and removal controls.
}
```

Preservar las propiedades aplicables de `inputProps`, y llamar a `onChange` con la forma de valor esperado
por el límite schema y submission.

## Proveedores, registros y anulaciones globales

Usar `FieldRegistryProvider` para una anulación de subárbol o
`createFieldRegistry({ includeDefaults, renderers })` para una instancia de registro explícita. El
nivel de módulo `registerFieldComponent`, `unregisterFieldComponent`, y `resetFieldComponents`
Los ayudantes mutan el registro predeterminado compartido y es mejor reservarlo para el código o las pruebas de bootstrap.

Solo se pueden registrar los tipos de campo declarados por `form0-core`. Un nuevo tipo de campo schema debe ser primero
definido en Core; un renderer nativo por sí solo no puede extender el contrato schema.
