stories/NestedTransition.js (35 lines of code) (raw):

import React, { useState } from 'react'; import StoryFixture from './StoryFixture'; import Fade from './transitions/Fade'; import Scale from './transitions/Scale'; function FadeAndScale(props) { return ( <Fade {...props}> <div>I will fade</div> {/* We also want to scale in at the same time so we pass the `in` state here as well, so it enters at the same time as the Fade. Note also the `appear` since the Fade will happen when the item mounts, the Scale transition will mount at the same time as the div we want to scale, so we need to tell it to animate as it _appears_. */} <Scale in={props.in} appear> I should scale </Scale> </Fade> ); } function Example() { const [showNested, setShowNested] = useState(false); return ( <StoryFixture description="nested Transtions"> <h3>Nested Animations</h3> <button onClick={() => { setShowNested(!showNested); }} > Click to see 2 nested animations </button> <FadeAndScale in={showNested} mountOnEnter unmountOnExit /> </StoryFixture> ); } export default Example;