Skip to content

Commit d991aa7

Browse files
committed
feat: migrate KeyboardStickyView to reanimated
1 parent b3dc83e commit d991aa7

1 file changed

Lines changed: 18 additions & 19 deletions

File tree

src/components/KeyboardStickyView/index.tsx

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import React, { forwardRef, useMemo } from "react";
2-
import { Animated } from "react-native";
2+
import Reanimated, {
3+
interpolate,
4+
useAnimatedStyle,
5+
} from "react-native-reanimated";
36

4-
import { useKeyboardAnimation } from "../../hooks";
7+
import { useReanimatedKeyboardAnimation } from "../../hooks";
58

69
import type { View, ViewProps } from "react-native";
710

@@ -51,29 +54,25 @@ const KeyboardStickyView = forwardRef<
5154
},
5255
ref,
5356
) => {
54-
const { height, progress } = useKeyboardAnimation();
57+
const { height, progress } = useReanimatedKeyboardAnimation();
5558

56-
const offset = progress.interpolate({
57-
inputRange: [0, 1],
58-
outputRange: [closed, opened],
59-
});
59+
const stickyViewStyle = useAnimatedStyle(() => {
60+
const offset = interpolate(progress.value, [0, 1], [closed, opened]);
6061

61-
const styles = useMemo(() => {
62-
const disabled = Animated.add(Animated.multiply(height, 0), closed);
63-
const active = Animated.add(height, offset);
62+
return {
63+
transform: [{ translateY: enabled ? height.value + offset : closed }],
64+
};
65+
}, [closed, opened, enabled]);
6466

65-
return [
66-
{
67-
transform: [{ translateY: enabled ? active : disabled }],
68-
},
69-
style,
70-
];
71-
}, [closed, enabled, height, offset, style]);
67+
const styles = useMemo(
68+
() => [style, stickyViewStyle],
69+
[style, stickyViewStyle],
70+
);
7271

7372
return (
74-
<Animated.View ref={ref} style={styles} {...props}>
73+
<Reanimated.View ref={ref} style={styles} {...props}>
7574
{children}
76-
</Animated.View>
75+
</Reanimated.View>
7776
);
7877
},
7978
);

0 commit comments

Comments
 (0)