Reanimated 2 不能使用具有直接值的 withSequence
Posted
技术标签:
【中文标题】Reanimated 2 不能使用具有直接值的 withSequence【英文标题】:Reanimated 2 can't use withSequence with direct value 【发布时间】:2021-12-29 12:34:24 【问题描述】:我想使用withSequence
直接值作为第一个值,使用下面的代码导致应用程序崩溃。
animatedValue.value = withSequence(startValue, withTiming(endValue));
下面的代码似乎运行良好,但在我的情况下,使用 withTiming
内的 startValue
并没有帮助。
animatedValue.value = withSequence(withTiming(startValue, duration: 0), withTiming(endValue));
【问题讨论】:
通过编写这样的链式语句,您将状态发送到另一个钩子。但这取决于钩子是否将该值作为初始条件。因为否则钩子可能只使用一次。要让它工作,您需要知道withSequence
的输入参数是什么,初始值或运行时动态值。
@windmaomao 问题是我将一个数字传递给withSequance
函数并且它崩溃了。但不是动画值。这些不是状态,因为它们是共享值,它们用于 Reanimated 2 中的动画。
【参考方案1】:
您可以在触发动画之前简单地将startValue
直接设置为animatedValue.value
:
animatedValue.value = startValue;
animatedValue.value = withTiming(endValue, duration: 500 )
【讨论】:
似乎 reanimated 由于某种原因跳过了第一个任务。 哦,好吧,我又看了你的问题,意识到我没能消化你的最后一句话。withSequence(withTiming(startValue, duration: 0)...
和我的方法都适用于我,我怀疑你的代码中有一部分会导致阻止 startValue
被分配的副作用。您介意提供可重现的代码吗?以上是关于Reanimated 2 不能使用具有直接值的 withSequence的主要内容,如果未能解决你的问题,请参考以下文章
Reanimated 2创建worklet失败,可能你忘了添加Reanimated的babel插件?,js引擎:hermes
安装 Reanimated 2 后仍会收到警告“如果您想使用 Reanimated 2 那么...”
使用 createDrawerNavigator() 时出现“错误:Reanimated 2 未能创建工作集,可能你忘记添加 Reanimated 的 babel 插件”
使用 React Native Gesture Handler 和 Reanimated 检测滑动方向