Tutti i componenti
MotionSwap
Contenuto che passa in dissolvenza incrociata mentre la sua dimensione si adegua.
WebReact NativeContenuto e dimensione
Provalo
Preparazione dell’esempio…
L’uso più breve
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Di che cosa si occupa al posto tuo
- L’elemento si ridimensiona dalla sua dimensione sullo schermo alla dimensione naturale del nuovo contenuto, così i pulsanti non saltano mai.
- Il vecchio contenuto svanisce dov’era mentre il nuovo compare; nessuno dei due si riposiziona durante lo scambio.
- Tornare indietro a metà di uno scambio prosegue da ciò che è sullo schermo invece di accumulare copie.
- I figli di solo testo sono il loro stesso
value; per tutto il resto passa value.
Usalo per
- Salva, poi Salvataggio…, poi Salvato.
- Uno skeleton che diventa una scheda profilo.
- Un pulsante play che diventa pausa.
Props
| Prop | Tipo | Predefinito | Descrizione |
|---|
value | unknown | | Identità del contenuto; un nuovo valore lo scambia. I figli di solo testo sono la loro stessa identità. |
|---|
children | ReactNode | | Il contenuto. |
|---|
as | element | 'span' | L’elemento da renderizzare. |
|---|
inline | boolean | as === 'span' | true si adatta al contenuto (etichette, icone); false riempie la larghezza del genitore e anima l’altezza. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Dove si trova il contenuto mentre la dimensione cambia. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Come entra ed esce il contenuto: up sale, down scende, scale cresce. |
|---|
transition | Transition | spring | Una curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte. |
|---|
onMotionComplete | (value) => void | | Viene eseguito quando il movimento si assesta. |
|---|
Le altre props vanno all’elemento renderizzato, quindi className, style e gli event handler funzionano come sempre.