@wbe/react-transition
v2.7.1
Published
    => {
const [isToggle, setIsToggle] = useState(true)
// Example with GSAP
const playInTransition = (el, done) => {
gsap.fromTo(el, {autoAlpha: 0}, {autoAlpha: 1, onComplete: done})
}
const playOutTransition = (el, done) => {
gsap.fromTo(el, {autoAlpha: 1}, {autoAlpha: 0, onComplete: done})
}
return (
<div className={"app"}>
<button onClick={() => setIsToggle(!isToggle)}>Toggle</button>
<Transition
if={isToggle}
playIn={playInTransition}
playOut={playOutTransition}
>
<div className={"element"} />
</Transition>
</div>
)
}Props
if
boolean optional - default: true
Toggle start play-in / play-out children with transition
children
ReactElement
React children element to transit
playIn
(el: HTMLElement, done: () => any) => void optional
Play-in transition function
onPlayInComplete
() => void optional
Function calls when play-in transition function is completed
playOut
(el: HTMLElement, done: () => any) => void optional
Play-out transition function
onPlayOutComplete
() => void optional
Function calls when play-out transition function is completed
appear
boolean optional - default: false
Start transition on first mount. If false, children is visible but transition
start only when "if" props change
unmountAfterPlayOut
boolean optional - default: true
Unmount children React element after playOut transition
dispatchPlayState
(play: TPlay) => void optional
Dispatch current TPlay string type
type TPlay = "hidden" | "play-out" | "play-in" | "visible";import React, {useEffect, useState} from "react"
import {Transition} from "@wbe/react-transition"
const App = () => {
// ...
const [elementPlayState, setElementPlayState] = useState(null);
useEffect(()=> {
if (elementPlayState === "play-in") {
// ...
}
}, [elementPlayState])
return (
<>
<Transition
// ...
// Everytime transition playState change, elementPlayState will be updated
dispatchPlayState={(playState) => setElementPlayState(playState)}
>
<div className={"element"} />
</Transition>
</>
)
}Example
A use case example is available on this repos.
Install dependencies
$ npm iStart dev server
$ npm run dev