Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Method to cancel scroll animation #24

Closed
TotallWAR opened this issue Mar 6, 2018 · 5 comments
Closed

Method to cancel scroll animation #24

TotallWAR opened this issue Mar 6, 2018 · 5 comments

Comments

@TotallWAR
Copy link

I have case that page should be scrolled conditionally.
I try
clickEvent.preventDefault(); clickEvent.stopPropagation();
but it's animated in any case.

@bySabi
Copy link
Collaborator

bySabi commented Mar 6, 2018

Don´t know for sure if i understand your problem but you can conditionally scroll, handling click event your self and scroll using simulateClick API(https://github.com/bySabi/react-scrollchor#simulate-click-api)

@TotallWAR
Copy link
Author

TotallWAR commented Mar 6, 2018

You mean simulate click onClick event?
I have next case: i have button, i should scroll to element for mobile devices and not scroll for desktop.
And i tried next:
handleClickRegButton(clickEvent) { if (!isMobile) { this.props.dispatchShowRegisterLayer(); clickEvent.preventDefault(); clickEvent.stopPropagation(); clickEvent.nativeEvent.stopImmediatePropagation(); clickEvent.nativeEvent.preventDefault(); clickEvent.nativeEvent.stopPropagation(); } }

...

<Scrollchor to="#registration-section" animate={{ duration: 300 }} beforeAnimate={this.handleClickRegButton} > <MyButton /> </Scrollchor>

You suggest to use simulateClick for this click event which activated on button click?

@bySabi
Copy link
Collaborator

bySabi commented Mar 6, 2018

@TotallWAR I would do otherwise, handleClickRegButton looks too much from the jQuery era. Why not use a better declarative approach, for Ex?

const RegButton = ({ isMobile }) => { 
     return isMobile
         ?  <a href="#registration-section"><MyButton /></a>
         : <Scrollchor to="#registration-section" animate={{ duration: 300 }}> <MyButton /> </Scrollchor>
}

@TotallWAR
Copy link
Author

Yes, you are right, this approach much better! Thank you for help =)

@bySabi
Copy link
Collaborator

bySabi commented Mar 6, 2018

@TotallWAR You can disable scroll animation passing "a 0 returning easing function", for Ex:

const RegButton = ({ isMobile }) => {
     const animate = isMobile ? {duration: 0, easing: () => 0 } : {duration: 300}
     return  <Scrollchor to="#registration-section" animate={animate}> <MyButton /> </Scrollchor>
}

I hope I've help you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants