Wszystkie komponenty
MotionSwap
Treść przenikająca się, podczas gdy rozmiar za nią podąża.
SiećReact NativeTreść i rozmiar
Wypróbuj
Przygotowywanie przykładu…
Najkrótsze użycie
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Co robi za ciebie
- Element zmienia rozmiar od rozmiaru na ekranie do naturalnego rozmiaru nowej treści, więc przyciski nigdy nie skaczą.
- Stara treść znika w miejscu, a nowa się pojawia; żadna nie przelewa się podczas zamiany.
- Powrót w środku zamiany kontynuuje od tego, co na ekranie, zamiast piętrzyć kopie.
- Dzieci będące zwykłym tekstem są własnym
value; dla wszystkiego innego przekaż value.
Do czego służy
- Zapisz, potem Zapisywanie…, potem Zapisano.
- Szkielet, który staje się kartą profilu.
- Przycisk odtwarzania, który staje się pauzą.
Props
| Prop | Typ | Domyślnie | Opis |
|---|
value | unknown | | Tożsamość treści; nowa wartość ją zamienia. Dzieci będące zwykłym tekstem są własną tożsamością. |
|---|
children | ReactNode | | Treść. |
|---|
as | element | 'span' | Element do wyrenderowania. |
|---|
inline | boolean | as === 'span' | true dopasowuje rozmiar do treści (etykiety, ikony); false wypełnia szerokość rodzica i animuje wysokość. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Gdzie znajduje się treść podczas zmiany rozmiaru. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Jak treść wchodzi i wychodzi: up unosi się, down opada, scale rośnie. |
|---|
transition | Transition | spring | Krzywa timing { duration, easing } lub sprężyna { tempo: 'spring', spring }. Sprężyny zachowują pęd po przerwaniu. |
|---|
onMotionComplete | (value) => void | | Uruchamia się, gdy ruch się ułoży. |
|---|
Pozostałe props trafiają do renderowanego elementu, więc className, style i obsługa zdarzeń działają jak zwykle.