動手試試
最簡用法
Notice.jsx<MotionPresence present={visible} exit={{ opacity: 0, translateY: -12 }}>
Draft saved
</MotionPresence>;
它替你處理的事
- 改變
present 而不是卸載;內容會先離場再被移除。 - 離場途中恢復顯示,會從目前的值繼續。
- 再次出現的內容會從
exit 姿態進場。 - 首次渲染時直接顯示靜止狀態,已經存在的內容不會閃爍。
適用情境
- 草稿已儲存的提示。
- 結帳頁的優惠券訊息。
- 輸入欄位下方的錯誤訊息。
Props
| Prop | 型別 | 預設值 | 說明 |
|---|
present | boolean | —必填 | 顯示或隱藏內容。用它來取代卸載。 |
|---|
enter | Pose | { opacity: 1, translateY: 0 } | 靜止時的姿態。 |
|---|
exit | Pose | { opacity: 0, translateY: -12 } | 內容離場以及進場時使用的姿態。 |
|---|
as | element | 'div' | 要渲染的元素。 |
|---|
transition | Transition | spring | 時間曲線 { duration, easing } 或彈簧 { tempo: 'spring', spring }。彈簧被中斷時會保留動量。 |
|---|
onExitComplete | () => void | | 內容離場並被移除後執行。 |
|---|
其他 props 會傳給渲染的元素,所以 className、style 與事件處理函式照常可用。