1.2.0 • Published 6 years ago

react-native-transitiongroup v1.2.0

Weekly downloads
5
License
MIT
Repository
github
Last release
6 years ago

react-native-transitiongroup

Works similar to ReactTransitionGroup found in react, but reimplemented in seperate library to work better with react-native

https://github.com/reactjs/react-transition-group/issues/6

General usage

important to always give your Transition components a unique key.

import TransitionGroup, { FadeInOutTransition } from 'react-native-transitiongroup';
<TransitionGroup>
  <FadeInOutTransition key="loader">
     {this.state.isLoading ? <Loader /> : null}
  </FadeInOutTransition>
</TransitionGroup>

Custom Transitions

You can easily create your own transitions, by creating your own Transition component. TransitionGroup will look for the following methods to be called on its child components to animate enter and leave

componentWillEnter(callback)
componentWillLeave(callback)

example of scale in/out

class ScaleInOutTransition extends Component {
  constructor() {
    super();

    this.state = {
      progress: new Animated.Value(0),
    };
  }

  componentWillEnter(callback) {
    Animated.timing(this.state.progress, {
      toValue: 1,
      delay: this.props.inDelay,
      easing: this.props.easing,
      duration: this.props.inDuration,
    }).start(callback);
  }

  componentWillLeave(callback) {
    Animated.timing(this.state.progress, {
      toValue: 0,
      delay: this.props.outDelay,
      easing: this.props.easing,
      duration: this.props.outDuration,
    }).start(callback);
  }

  render() {
    const animation = {
      transform: [
        { scale: this.state.progress },
      ]
    };

    return (
      <Animated.View
        style={[this.props.style, animation]}>
        {this.props.children}
      </Animated.View>
    );
  }
}