动手试试
最简用法
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 和事件处理函数照常可用。