component. -->
Demo
Shows an skeleton component.
npx @react-native-reusables/cli@latest add skeleton
Copy/paste the following code to ~/components/ui/skeleton.tsx
~/components/ui/skeleton.tsx
import * as React from 'react';import Animated, { useAnimatedStyle, useSharedValue, withRepeat, withSequence, withTiming,} from 'react-native-reanimated';import { cn } from '~/lib/utils'; const duration = 1000; function Skeleton({ className, ...props}: Omit<React.ComponentPropsWithoutRef<typeof Animated.View>, 'style'>) { const sv = useSharedValue(1); React.useEffect(() => { sv.value = withRepeat( withSequence(withTiming(0.5, { duration }), withTiming(1, { duration })), -1 ); }, []); const style = useAnimatedStyle(() => ({ opacity: sv.value, })); return ( <Animated.View style={style} className={cn('rounded-md bg-secondary dark:bg-muted', className)} {...props} /> );} export { Skeleton };
import { Skeleton } from '~/components/ui/skeleton'; function Example() { return ( <Skeleton className='h-12 w-12 rounded-full' /> );}
Extends View props except for style.
View
style