Share Posted June 16, 2020 I'm trying to get ScrollTrigger to work as a React component that I can wrap other elements in to have them animate when they appear. So if I have a bunch of components named <Box /> and I want them to reveal themselves when as they are scrolled in to view, I want to be able to wrap them in a <Reveal /> component that will do this — rather than rewriting the same code. Is there a simple way to do this? Currently in my live example (not in the CodePen... I'm not very good at writing these) the component animates in but it does all of the animations at the exact same time. See the Pen RwrGYap by n0k5 (@n0k5) on CodePen Link to comment Share on other sites More sharing options...
Share Posted June 16, 2020 Hey ccld. This is likely because your trigger for all of them is the same: '.reveal' which GSAP will use .querySelector() on to get the first instance. You should pass in your reference instead I believe. Also, I'm not very skilled in React, but shouldn't your use effect have a [] as the last parameter so that it only runs after the initial render? useEffect(() => { gsap.to(revealRef.current, { scrollTrigger: revealRef.current, x: 500, }); }, []); 2 Link to comment Share on other sites More sharing options...
Author Share Posted June 16, 2020 That was it! I completely overlooked the trigger needing to be the same ref in this case (it animates itself in as it appears). Thanks as always @ZachSaucier Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now