J'ai le code suivant pour animer dans React Native
Animated.timing(
this.state.absoluteChangeX,
{toValue: 0},
).start(function() {
this.lastX = 0;
this.lastY = 0;
});
Assez simple, mais chaque fois qu'il est déclenché, je reçois l'erreur: singleValue.stopTracking is not a function
Voici d'où vient l'erreur:
/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();
},
};
};
Je ne suis pas très versé dans typeScript, mais cela var singleValue: any
signifie que "singleValue" peut être n'importe quel type. Dans mon cas, c'est un nombre. Puisque les nombres n'ont pas de méthodes, il serait logique que cela soit une erreur.
Est-ce que je fais quelque chose de mal?
La valeur que vous souhaitez animer doit être une instance de Animated.Value
ou l'un de ses sous-types. Lorsque vous initialisez votre état, cela devrait ressembler à ceci:
getInitialState() {
return { absoluteChangeX: new Animated.Value(0) };
}
Le fait que la déclaration de type dans la méthode framework any
soit simplement un manque de contrainte, pas une invitation explicite à y passer une valeur.
Consultez la documentation animée pour plus d'exemples.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots