# Valori, snapshots e submission

<PageBadges />

## Stato iniziale e restauro

Usa `initialValues` per un normale seme da record. `overrideValues` ha la precedenza e la tuta
valori host autorevoli. Per il restauro completo, preferire `initialSnapshot`:

```jsx
<FormRenderer
  schema={schema}
  initialSnapshot={savedDraft}
  onSnapshotChange={(snapshot, change) => {
    if (change.dirty) queueLocalDraft(snapshot)
  }}
  onSubmit={uploadRecord}
/>
```

snapshot mantiene insieme i valori grezzi, le voci ripetibili annidate e i timestamp:

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

`onSnapshotChange(snapshot, meta)` segnala per la prima volta `{ kind: "seed", dirty: false }`; utente successivo
modifiche utilizzare `{ kind: "change", dirty }`.

## Salvare drafts o inviare record

Imposta `primaryActionMode="save"` e fornisci `onSave(snapshot, meta)` per una draft tollerante alla convalida
azione. `meta` contiene il riepilogo di convalida corrente e lo stato sporco.

L'azione di invio predefinita convalida per prima. `onSubmit(record, meta)` riceve il record strutturato
descritto in [Output e record](/it/core/output-records), più valori grezzi, stato ripetibile,
timestamp e il riepilogo della convalida.

Lo binding non persiste o non sincronizza nessuno dei due payload.
record, riprovare errori e risolvere i conflitti nell'applicazione host.
