mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix: Preserve native animated value after animated component unmount (#28841)
Summary: After animation has been finished using Native driver there is no final value passed from the native to JS side. This causes a bug from https://github.com/facebook/react-native/issues/28114. This PR solves this problem in the same way as `react-native-reanimated` library. When detaching it is calling native side to get the last value from Animated node and stores it on the JS side. Preserving animated value even if animation was using `useNativeDriver: true` Fixes https://github.com/facebook/react-native/issues/28114 ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [Internal] [Fixed] - Save native Animated node value on JS side in detach phase Pull Request resolved: https://github.com/facebook/react-native/pull/28841 Test Plan: Unit tests for added getValue method passed. Green CI Reviewed By: mdvacca Differential Revision: D22211499 Pulled By: JoshuaGross fbshipit-source-id: 9a3a98a9f9a8536fe2c8764f667cdabe1f6ba82a
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0fda91ffff
commit
d92284216f
+13
@@ -860,6 +860,19 @@ public class NativeAnimatedNodeTraversalTest {
|
||||
verifyNoMoreInteractions(animationCallback);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetValue() {
|
||||
int tag = 1;
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
tag, JavaOnlyMap.of("type", "value", "value", 1d, "offset", 0d));
|
||||
|
||||
Callback saveValueCallbackMock = mock(Callback.class);
|
||||
|
||||
mNativeAnimatedNodesManager.getValue(tag, saveValueCallbackMock);
|
||||
|
||||
verify(saveValueCallbackMock, times(1)).invoke(1d);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterpolationNode() {
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
|
||||
Reference in New Issue
Block a user