Overview
运动值跟踪动画值的状 态和速度。
它们是可组合的、信号类值,因为 Motion 可以使用其优化的 DOM 渲染器来渲染它们,所以性能良好。
通常,这些由运动组件自动创建。但对于高级用例,也可以手动创建。
通过手动创建运动值,您可以:
- 设置和获取其状态。
- 传递给多个组件以同步它们之间的运动。
- 通过
useTransform组合器获取MotionValues链。 - 更新视觉属性而不触发渲染周期。
- 订阅更新。
使用
运动值可以使用 useMotionValue 组合器创建。传递给 useMotionValue 的字符串或数字将作为其初始状态。
运动值可以通过运动组件通过样式传递:
或者对于 SVG 属性,通过属性 prop 本身:
可以传递相同的动作值给多个组件。
运动值可以使用设置方法进行更新。
修改运动值将更新 DOM 而不会触发重新渲染。运动值可以多次更新,但渲染将批量到下一个动画帧。
一个动作值可以包含任何字符串或数字。我们可以使用get方法来读取它。
运动值包含数字的可以通过getVelocity方法返回速度。此方法返回每秒计算的速度,以考虑设备之间帧率的差异。
对于字符串和颜色,getVelocity 总是返回 0。
事件
监听器可以通过on方法或useMotionValueEvent组合式添加到运动值中。
可用事件有 "change"、"animationStart"、"animationComplete"``"animationCancel"。
组成
超出useMotionValue,Motion Vue 提供了一系列用于创建和组合运动值的可组合组件,如useSpring和useTransform。
例如,使用useTransform,我们可以获取一个或多个运动值的最新状态,并创建一个新的运动值。
useSpring 可以创建一个通过弹簧附加到另一个值上的运动值。
这些运动值可以进一步传递给运动组件,或者与更多可组合元素如useVelocity组合。
API
get()
返回运动值的最新状态。
getVelocity()
返回运动值的最新速度。如果值非数值,则返回 0。
set()
设置运动值到新状态。
跳转()
将运动值跳转到新的状态,从而中断从先前值到当前值的连续性:
- 重置速度为 0。
- 结束活动动画。
- 忽略附加效果(例如使用 Spring 的 spring)。
isAnimating()
返回 true 如果当前值正在动画中。
停止()
停止活动动画。
开启()
订阅运动值事件。可用事件包括:
- 更改
- 动画开始
- 动画取消
- 动画完成
返回一个函数,当调用该函数时,将取消订阅监听器。
您可以在 vue 组件中使用on,或者使用useMotionValueEvent组合式代替。
destroy()
销毁并清理此动作值订阅者。
这通常会被自动处理,因此只有在您使用纯代码 motionValue 组合器在渲染周期外手动创建运动值时,此方法才是必要的。