diff --git a/packages/react-native/Libraries/Animated/animations/Animation.js b/packages/react-native/Libraries/Animated/animations/Animation.js index 8152fa30bccb3b..37d848195adcf8 100644 --- a/packages/react-native/Libraries/Animated/animations/Animation.js +++ b/packages/react-native/Libraries/Animated/animations/Animation.js @@ -36,9 +36,10 @@ let startNativeAnimationNextId = 1; // Once an animation has been stopped or finished its course, it will // not be reused. export default class Animation { + #onEnd: ?EndCallback; + __active: boolean; __isInteraction: boolean; - __onEnd: ?EndCallback; __iterations: number; __isLooping: ?boolean; @@ -50,7 +51,9 @@ export default class Animation { onEnd: ?EndCallback, previousAnimation: ?Animation, animatedValue: AnimatedValue, - ): void {} + ): void { + this.#onEnd = onEnd; + } stop(): void { if (this._nativeId) { @@ -66,8 +69,8 @@ export default class Animation { // Helper function for subclasses to make sure onEnd is only called once. __debouncedOnEnd(result: EndResult): void { - const onEnd = this.__onEnd; - this.__onEnd = null; + const onEnd = this.#onEnd; + this.#onEnd = null; onEnd && onEnd(result); } diff --git a/packages/react-native/Libraries/Animated/animations/DecayAnimation.js b/packages/react-native/Libraries/Animated/animations/DecayAnimation.js index 915d913b6d8205..0518942633e726 100644 --- a/packages/react-native/Libraries/Animated/animations/DecayAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/DecayAnimation.js @@ -79,11 +79,12 @@ export default class DecayAnimation extends Animation { previousAnimation: ?Animation, animatedValue: AnimatedValue, ): void { + super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue); + this.__active = true; this._lastValue = fromValue; this._fromValue = fromValue; this._onUpdate = onUpdate; - this.__onEnd = onEnd; this._startTime = Date.now(); if (!this._useNativeDriver && animatedValue.__isNative === true) { diff --git a/packages/react-native/Libraries/Animated/animations/SpringAnimation.js b/packages/react-native/Libraries/Animated/animations/SpringAnimation.js index d5641ad95a28d1..6b7ab0c8c8c5eb 100644 --- a/packages/react-native/Libraries/Animated/animations/SpringAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/SpringAnimation.js @@ -202,12 +202,13 @@ export default class SpringAnimation extends Animation { previousAnimation: ?Animation, animatedValue: AnimatedValue, ): void { + super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue); + this.__active = true; this._startPosition = fromValue; this._lastPosition = this._startPosition; this._onUpdate = onUpdate; - this.__onEnd = onEnd; this._lastTime = Date.now(); this._frameTime = 0.0; diff --git a/packages/react-native/Libraries/Animated/animations/TimingAnimation.js b/packages/react-native/Libraries/Animated/animations/TimingAnimation.js index c4436f25ffc132..f287c0dca756ec 100644 --- a/packages/react-native/Libraries/Animated/animations/TimingAnimation.js +++ b/packages/react-native/Libraries/Animated/animations/TimingAnimation.js @@ -107,10 +107,11 @@ export default class TimingAnimation extends Animation { previousAnimation: ?Animation, animatedValue: AnimatedValue, ): void { + super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue); + this.__active = true; this._fromValue = fromValue; this._onUpdate = onUpdate; - this.__onEnd = onEnd; const start = () => { if (!this._useNativeDriver && animatedValue.__isNative === true) { diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 883208bcfe69ae..e94a76ff88ada5 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -427,7 +427,6 @@ export type AnimationConfig = { declare export default class Animation { __active: boolean; __isInteraction: boolean; - __onEnd: ?EndCallback; __iterations: number; __isLooping: ?boolean; _nativeId: number;