UNPKG

react-tween

Version:

Tween animation for React components

135 lines (118 loc) 3.06 kB
react-tween === DEPRECATED - Recommend https://github.com/tannerlinsley/react-move instead! --- Tween animation for React components [Demo](http://codepen.io/mking-clari/pen/XNYbJX) Usage --- Animate props with `Tween`. ```javascript function Example({ color, ...props }) { return ( <Tween style={{ color }} > {style => ( <div style={{ backgroundColor: style.color }} /> )} </Tween> ); } ``` Customize easing, duration, and delay. ```javascript import { easeCubicInOut } from 'd3-ease'; function Example({ color, ...props }) { return ( <Tween easing={easeCubicInOut} delay={1000} duration={500} style={{ color }} > {/* ... */} </Tween> ); } ``` Animate added or removed items with `Tween.TransitionGroup`. - In this example, the collection is a list of meetings. - When a meeting is added, it fades in (`willEnter`). - When a meeting is removed, it fades out (`willLeave`). ```javascript function Example({ meetings, ...props }) { return ( <Tween.TransitionGroup styles={meetings.map(meeting => ({ key: meeting.id, style: { opacity: 1, }, data: meeting, }))} willEnter={style => ({ ...style.style, opacity: 0 })} willLeave={style => ({ ...style.style, opacity: 0 })} > {styles => ( <div> {styles.map(style => ( <div key={style.key} style={{ opacity: style.style.opacity }} > {style.data.title} </div> ))} </div> )} </Tween.TransitionGroup> ); } ``` For `Tween.TransitionGroup`, each style is a `TransitionStyle`, which has the following format. ```javascript { key, // item id style: { ... }, // plain style object (same format as style for `Tween`) data, // item data } ``` `willEnter` and `willLeave` are passed `TransitionStyle`s and should return plain style objects. Synchronizing animations --- By default, `Tween`s animate whenever their styles change. If you want control over when animation begins, set the `group` prop. If the `group` prop is set, animation only begins when the value of this prop changes. `group` is essentially a logical grouping of animations that should run together. ```javascript function Example({ color1, color2, invalidationCounter, ...props }) { return ( <div {...props}> <Tween group={invalidationCounter} style={{ color: color1 }} > {/* ... */} </Tween> <Tween group={invalidationCounter} style={{ color: color2 }} > {/* ... */} </Tween> </div> ); } ``` Comparison to `react-motion` --- Choose `react-tween` or `react-motion` based on whether you want tween or spring animation. - If you want natural, physical motion, use spring animation. - If you want to specify a duration, or you do not want a bounce, use tween animation. Setup --- ``` yarn yarn start # Visit http://localhost:8080 ```