# Valeurs, snapshots et submission

<PageBadges />

## Valeurs initiales et remplacements

Utilisez `initialValues` pour l'enregistrement en cours d'édition. `overrideValues` ont priorité et sont utiles
pour les valeurs d'hôte faisant autorité telles qu'un état fourni par une application.

Pour une restauration complète, préférez `initialSnapshot`:

```jsx
<FormRenderer
  schema={schema}
  initialSnapshot={{
    raw_values: saved.raw_values,
    repeatable: saved.repeatable,
    timestamps: saved.timestamps,
  }}
  onSnapshotChange={(snapshot, change) => {
    if (change.dirty) queueDraft(snapshot)
  }}
  onSubmit={saveRecord}
/>
```

Une snapshot initiale remplace `initialValues` pour les valeurs de champ brutes.
Les entrées reproductibles et les horodatages client/serveur comme un seul état cohérent.

## Observer drafts

`onSnapshotChange(snapshot, change)` est appelé en premier avec `{ kind: "seed", dirty: false }`. Plus tard
Les changements d'utilisateur utilisent `{ kind: "change", dirty: boolean }`.

Le snapshot contient:

```js
{
  raw_values: {},
  repeatable: {},
  timestamps: {
    created_at_client: null,
    updated_at_client: null,
    created_at_server: null,
    updated_at_server: null,
  },
}
```

## Soumettre des enregistrements

`onSubmit(record, meta)` reçoit l'enregistrement structuré décrit dans
[Sortie et enregistrements](/fr/core/output-records) `meta` contient `rawValues`, `repeatable`, `timestamps`,
et `validationSummary`.

Si `onSubmit` renvoie une promesse, une superposition configurée avec `autoCloseOverlayOnSubmit` se ferme uniquement
après la résolution de la promesse. Un rejet la laisse ouverte. Utilisez `submitBlockedReason` pour l'application
exigences en dehors du schema et `externalDirty` pour l'état d'application en dehors du renderer.
