# Champ personnalisé renderers

<PageBadges />

renderers personnalisé change la présentation native sans déplacer les calculs, la visibilité,
exigences, ou validation de `form0-core`.

## Per-form remplace

Passez une carte renderer directement à `FormRenderer` pour une forme isolée:

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

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

Un renderer reçoit le champ et son état d'interaction évalué:

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

Préservez les propriétés applicables de `inputProps`, et appelez `onChange` avec la forme de valeur attendue
par les limites schema et submission.

## Fournisseurs, registres et remplacements globaux

Utilisez `FieldRegistryProvider` pour une substitution de sous-arbre ou
`createFieldRegistry({ includeDefaults, renderers })` pour une instance de Registre explicite.
`registerFieldComponent`, `unregisterFieldComponent`, et `resetFieldComponents`
helpers muter le registre par défaut partagé et sont mieux réservés pour le code ou les tests bootstrap.

Seuls les types de champs déclarés par `form0-core` peuvent être enregistrés.
défini dans Core; un renderer natif seul ne peut pas prolonger le contrat schema.
