cancelAnimation
cancelAnimation
позволяет отменить запущенную анимацию, сопряженную с shared value.
Описание
| import { cancelAnimation } from 'react-native-reanimated';
function App() {
const offset = useSharedValue(100);
const handleCancel = () => {
// highlight-next-line
cancelAnimation(offset);
};
}
|
Типизация
| type SharedValue<T> = { value: T };
function cancelAnimation<T>(
sharedValue: SharedValue<T>
): void;
|
Аргументы
sharedValue
Общее значение запущенной анимации, которую необходимо отменить. Если анимация не запущена, функция cancelAnimation
ничего не делает.
Возвращает
Функция cancelAnimation
возвращает значение undefined
.
Пример
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 | import React from 'react';
import { StyleSheet, View, Button } from 'react-native';
import Animated, {
useSharedValue,
useAnimatedStyle,
withTiming,
withRepeat,
cancelAnimation,
} from 'react-native-reanimated';
const OFFSET = 200;
export default function App() {
const offset = useSharedValue(OFFSET);
const animatedStyles = useAnimatedStyle(() => ({
transform: [{ translateX: offset.value }],
}));
const startAnimation = () => {
offset.value = withRepeat(
withTiming(
offset.value > 0 ? -OFFSET : OFFSET,
{ duration: 1500 }
),
-1,
true
);
};
React.useEffect(() => {
startAnimation();
}, []);
const handleCancelAnimation = () => {
// highlight-next-line
cancelAnimation(offset);
};
return (
<View style={styles.container}>
<Animated.View
style={[styles.box, animatedStyles]}
/>
<View style={styles.row}>
<Button
title="Cancel animation"
onPress={handleCancelAnimation}
/>
<Button
title="Start animation"
onPress={startAnimation}
/>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
height: '100%',
},
box: {
height: 120,
width: 120,
backgroundColor: '#b58df1',
borderRadius: 20,
marginBottom: 30,
},
row: {
flexDirection: 'row',
gap: 10,
},
});
|
Замечания
- Вы можете возобновить анимацию, снова назначив ту же анимацию (например,
withSpring
, withTiming
) общему значению.
Совместимость с платформами
Ссылки