useTransform

useTransform(parent, transform): MotionValue

把一个motionValue通过一个函数处理转换成另一个MotionValue。正在这个案例里,y永远会2倍于x。

import * as React from "react"
import { Frame, useMotionValue, useTransform } from "framer"

export function MyComponent() {
  const x = useMotionValue(10)
  const y = useTransform(x, value => value * 2)

  return <Frame x={x} y={y} />
}

parent: MotionValue

需要被转换的MotionValue类型的数据

transform: Transformer<T>

将MotionValue进行转换的一个函数

returns: MotionValue

MotionValue

Transforming Ranges

也可以利用这个useTramsform方法实现范围映射,在下面这个例子中,我们创建了一个可水平移动的Frame元素。

Frame这个元素的x初始状态时值是0,我们通过useTransform方法,当Frame移动范围是0-200的时候,会映射输出一个1-0.5范围的数字,同时这个数据被赋值到了Frame标签的scale属性上,这样Frame标签的缩放就和水平移动的距离产生联动了。

import * as React from "react"
import { Frame, useMotionValue, useTransform } from "framer"

export function MyComponent() {
  const x = useMotionValue(0)
  const scale = useTransform(x, [0, 200], [1, 0.5])

  return <Frame drag={"x"} x={x} scale={scale} />
}

Last updated

Was this helpful?