Skip to content

Feature: Add useObserveScrollPosition and useScrollTo #49

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

Merged
merged 15 commits into from
Jun 22, 2020

Conversation

compulim
Copy link
Owner

@compulim compulim commented Jun 21, 2020

Changelog

Breaking changes

  • scrollToBottom/scrollToEnd/scrollToStart/scrollToTop now accept an option { behavior: 'auto' | 'smooth' }
    • Without the option, it is by default to artificial smooth scrolling (smooth), to keep existing behavior
    • This behavior may change in the future, by defaulting to discrete scrolling (auto), to better align with HTML DOMElement.scrollIntoView standard
    • During the transition, please always pass { behavior: 'smooth' } to keep existing behavior

Added

  • Added useAnimatingToEnd getter to indicate if it is animating towards to the end, in PR #49
    • The existing useAnimating getter only indicate if it is animating to any scroll positions
  • Added scrollTo function to scroll to a specific scrollTop value, this is similar to DOMElement.scrollIntoView(), in PR #49
    • The signature is scrollTo(scrollTop: number, options: { behavior: 'auto' | 'smooth' })
    • Pass { behavior: 'smooth' } for synthetic smooth scrolling
  • Added useObserveScrollTop hook to observe scroll event, in PR #49
    • This effect function will be called rapidly on scroll, please avoid expensive code such as calling setter of useState and any code that would cause re-render

Fixed

  • Cancel scroll animation on mouse wheel or touch gesture, in PR #49
  • Calling scrollTo should cancel any existing scroll animation, in PR #49

@compulim compulim merged commit e7d148e into master Jun 22, 2020
@compulim compulim deleted the feat-scroll-to branch June 22, 2020 03:50
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

Successfully merging this pull request may close these issues.

1 participant