8

我碰巧有一个从 -1 到 1 的动画,我想将这些值转换为以下 2 个字符串:

如果值为负,则为“上一个” 。

如果值为正,则为“下一步” 。

this.state.anim.interpolate({
    inputRange: [-1, 0, 1],
    outputRange: ['Previous','', 'Next'],
})

问:我如何使用this.state.anim包含的值来决定是进入下一个屏幕还是上一个屏幕。

更多信息:

this.state.anim从 a 接收它的值PanGesture,我this.state.anim也用于许多其他事情,所以不在这里使用它会很遗憾。

4

1 回答 1

0

对于那些正在寻找react-native-reanimatedv1.x 解决方案的人,您可以使用数学助手将插值强制转换为布尔值,或者像 OP 的情况一样,转换为字符串:


const interpolated = Animated.interpolate(
  value,
  {
    inputRange: [-1, 1],
    outputRange: [0, 1],
  },
);

const interpolatedAsInteger = Animated.round(interpolated);

const boolean = Animated.cond(
  interpolatedAsInteger,
  new Animated.Value(true),
  new Animated.Value(false),
);


此示例用于round()强制插值为 0 或 1。然后cond()允许我们返回Animated我们想要的任何值的节点。在这种情况下,我使用了真/假,但这些可能是“下一个”和“上一个”之类的字符串。

有了更多的逻辑,这种方法还可以处理零情况,它应该返回一个空字符串。

文档cond()

于 2022-02-02T23:47:18.907 回答