跳到主要内容

React Native Reanimated

React Native Reanimated 是 React Native 提供的 LayoutAnimation API 的替代动画库。

我们支持视图动画和大部分 布局动画

布局动画

对于布局动画,类似于 React Native API,你需要先调用 prepareLayoutAnimationRender(),然后再删除或插入想要进行动画的元素。请注意,我们目前仅支持进入退出动画。目前不支持 布局过渡

Hook

用法

你可以像在普通视图中一样使用诸如 useSharedValue 的 Hook。不同之处在于,由于视图会被回收,一个值可能会转移到不相关的组件。当视图被回收时,你需要重置这些值 - 为此,你可以传递一个唯一标识单元格的 prop (例如项目的 id ),并通过 useEffect 运行回调。你可以从以下示例中获得灵感

import React, { useEffect } from "react";
import Animated, { useSharedValue } from "react-native-reanimated";
import { FlashList } from "@shopify/flash-list";

const MyList = () => {
const Item = ({ item }: { item: { id: string } }) => {
const myValue = useSharedValue(0);
useEffect(() => {
// Reset value when id changes (view was recycled for another item)
myValue.value = 0;
}, [item.id, myValue]);
return <Animated.View />;
};

return <FlashList renderItem={Item} estimatedItemSize={100} />;
};

性能

如果你使用接受依赖项数组的 Hook,请确保利用它并仅包含最少的依赖项集。