From 2b49eddcfd8e21bee13fd14ada9b69f3b2f1a8d6 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Mon, 31 Oct 2016 20:39:44 -0700 Subject: [PATCH] Fix initial value of native Animated.Value Summary: Native Animated.Value uses the value it was created with when sending the config to native but this causes issue when the value has changed before calling `__makeNative` this happens with the `progress` value for `NavigationExperimental`. It gets initialized with value 1, then uses `setValue` to change it to 0 before starting the animation and this is when `__makeNative` is called. This simply uses the current value instead of the value passed to the constructor. Also pass offset so native implementations that support it can use it (iOS). **Test plan** Tested that the first transition that uses the `progress` animated value is not broken in an app that uses `NavigationExperimental` when using `useNativeDriver` for animations. Closes https://github.com/facebook/react-native/pull/10656 Differential Revision: D4107624 fbshipit-source-id: 921cf4a3422cf91923bc315fd7a15c508becddae --- Libraries/Animated/src/AnimatedImplementation.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Libraries/Animated/src/AnimatedImplementation.js b/Libraries/Animated/src/AnimatedImplementation.js index 7fb99069c55..dc8fcc162f1 100644 --- a/Libraries/Animated/src/AnimatedImplementation.js +++ b/Libraries/Animated/src/AnimatedImplementation.js @@ -671,7 +671,6 @@ var _uniqueId = 1; */ class AnimatedValue extends AnimatedWithChildren { _value: number; - _startingValue: number; _offset: number; _animation: ?Animation; _tracking: ?Animated; @@ -680,7 +679,7 @@ class AnimatedValue extends AnimatedWithChildren { constructor(value: number) { super(); - this._startingValue = this._value = value; + this._value = value; this._offset = 0; this._animation = null; this._listeners = {}; @@ -879,7 +878,8 @@ class AnimatedValue extends AnimatedWithChildren { __getNativeConfig(): Object { return { type: 'value', - value: this._startingValue, + value: this._value, + offset: this._offset, }; } }