React Native Animated singleValue.stopTracking 不是函数 [英] React Native Animated singleValue.stopTracking is not a function

查看:87
本文介绍了React Native Animated singleValue.stopTracking 不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码可以在 React Native 中制作动画

I have the following code to animate in React Native

Animated.timing(
    this.state.absoluteChangeX,
    {toValue: 0},
).start(function() {
    this.lastX = 0;
    this.lastY = 0;
}); 

很简单,但每当触发时,我都会收到错误消息:singleValue.stopTracking 不是函数

Pretty simple, but whenever it's triggered, I receive the error: singleValue.stopTracking is not a function

这里是错误的来源:

/react-native/Libraries/Animates/src/AnimtaedImplementation.js

/react-native/Libraries/Animates/src/AnimtaedImplementation.js

var timing = function(
  value: AnimatedValue | AnimatedValueXY,
  config: TimingAnimationConfig,
): CompositeAnimation {
  return maybeVectorAnim(value, config, timing) || {
    start: function(callback?: ?EndCallback): void {
      var singleValue: any = value;
      var singleConfig: any = config;
      singleValue.stopTracking(); // <--------------- HERE!!!
      if (config.toValue instanceof Animated) {
        singleValue.track(new AnimatedTracking(
          singleValue,
          config.toValue,
          TimingAnimation,
          singleConfig,
          callback
        ));
      } else {
        singleValue.animate(new TimingAnimation(singleConfig), callback);
      }
    },

    stop: function(): void {
      value.stopAnimation();
    },
  };
};

我不是很精通 typeScript,但是 var singleValue: any 意味着singleValue"可以是任何类型.就我而言,它是一个数字.由于数字没有方法,所以这会出错是有道理的.

I'm not extremely versed in typeScript, but var singleValue: any means that "singleValue" could be any type. In my case, it's a number. Since numbers don't have methods, it would make sense that this would error.

我做错了什么吗?

推荐答案

您希望设置动画的值必须是 Animated.Value 的实例,或其子类型之一.当你初始化你的状态时,它应该看起来像这样:

The value you wish to animate must be an instance of Animated.Value, or one of its subtypes. When you initialize your state, it should look something like this:

getInitialState() {
  return { absoluteChangeX: new Animated.Value(0) };
}

框架方法中类型声明为any的事实只是缺乏约束,而不是明确邀请将任何值传递给它.

The fact that the type declaration in the framework method is any is just a lack of constraint, not an explicit invitation to pass any value into it.

有关更多示例,请参阅动画文档.

See the Animated docs for more examples.

这篇关于React Native Animated singleValue.stopTracking 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆