Permalink
Browse files

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 #10656

Differential Revision: D4107624

fbshipit-source-id: 921cf4a3422cf91923bc315fd7a15c508becddae
  • Loading branch information...
1 parent c089761 commit 2b49eddcfd8e21bee13fd14ada9b69f3b2f1a8d6 @janicduplessis janicduplessis committed with Facebook Github Bot Nov 1, 2016
Showing with 3 additions and 3 deletions.
  1. +3 −3 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,
};
}
}

0 comments on commit 2b49edd

Please sign in to comment.