Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/slorber/react-native-animation-hooks

A simple declarative API for React-Native animations, using hooks
https://github.com/slorber/react-native-animation-hooks

Last synced: 13 days ago
JSON representation

A simple declarative API for React-Native animations, using hooks

Awesome Lists containing this project

README

        

# react-native-animation-hooks

[![NPM](https://img.shields.io/npm/dm/react-native-animation-hooks.svg)](https://www.npmjs.com/package/react-native-animation-hooks)
[![Build Status](https://travis-ci.com/slorber/react-native-animation-hooks.svg?branch=master)](https://travis-ci.com/slorber/react-native-animation-hooks)

`yarn add react-native-animation-hooks`

The most convenient way to add little animations to your ReactNative application.

```jsx
const Comp = () => {
const [bool, setBool] = useState(false)
const toggle = () => setBool(!bool);

const animatedOpacity = useAnimation({
toValue: bool ? 1 : 0.5,
})

return (

Hello

)
}
```

- Tiny interface using hooks and Animated framework
- Compatible with Expo
- Reduce Animated.Value management boilerplate
- Full support for `spring` and `timing` animations
- Typescript definitions

# Advanced example:

This repo is an Expo app that you can run with `yarn start`.

```tsx
import React, { useState } from 'react'
import { Animated, Switch, View, StyleProp, ViewStyle } from 'react-native'

import { useAnimation } from 'react-native-animation-hooks'

const AnimatedShape = ({ style }: { style?: StyleProp }) => (

)

const ExampleScreen = () => {
const [bool, setBool] = useState(false)

const animatedValue = useAnimation({
type: 'timing',
initialValue: 1,
toValue: bool ? 1 : 0,
duration: bool ? 1000 : 300,
useNativeDriver: true,
})

return (










)
}

export default ExampleScreen
```

# License

MIT

# Hire a freelance expert

Looking for a React/ReactNative freelance expert with more than 5 years production experience?
Contact me from my [website](https://sebastienlorber.com/) or with [Twitter](https://twitter.com/sebastienlorber).