react-native-paged-scroll-view v2.0.4
react-native-paged-scroll-view
A higher-order React Native component to compute the current and total pages of a ScrollView-compatible component
Note: I've tried and will try to keep this mostly functional and current, but my job no longer involves working with React Native, so it's a little tough to really dig in and get to the bottom of tricky issues. I'll try to maintain this, but I won't be actively improving it. I'll gladly accept PRs though!
Introduction
This module implements a higher-order component that computes the current and total pages contained in a React Native ScrollView (or functionally similar) component. So it's really very simple. Seriously, when you get down to it it's like a division and a floor function. But it attempts to solve layout race conditions, re-layout and other subtleties. This component could trivially be used as a swiper alongside a page indicator but does not implement that itself.
To be clear, this is strictly just a page-computing component. I assume you'll use it with pagingEnabled={true}
, and it doesn't add paged scrolling for Android.
Example
import { ScrollView } from 'react-native'
import AddPaging from 'react-native-paged-scroll-view'
var PagedScrollView = AddPaging(ScrollView)
...
handlePageChange (state) {
console.log('current horizontal page:', state.currentHorizontalPage)
console.log('current vertical page: ', state.currentVerticalPage)
console.log('total horizontal pages: ', state.totalHorizontalPages)
console.log('total vertical pages: ', state.totalVerticalPages)
}
render () {
return (
<PagedScrollView onPageChange={this.handlePageChange.bind(this)}>
...
</PagedScrollView>
)
}
...
Installation
$ npm install react-native-paged-scroll-view
Usage
require('react-native-paged-scroll-view')(Component, [scrollViewRefPropName="ref"])
Wrap either a ScrollView
or a component functionally equivalent (implements onScroll
and similar basic methods). Returns a higher order component with props passed through.
Arguments:
Component
: The component being wrapped. It must implement the basic methods of a ScrollView.scrollViewRefPropName
: the name of the property passed toComponent
that will return the ref. This exists in case you're using a wrapped aScrollView
component for whichref
returns the ref of the wrapper instead of the ref of theScrollView
. If you provide this property, then your wrappedScrollView
should have a propertyref={this.props.<scrollViewRefPropName>}
with your method name inserted. If you're just using aScrollView
though, you should be fine. Suggestions on how to improve this are welcome.
Props:
onPageChange
:function(state)
: Executed on initial layout, when the page changes, or when the inner content changes. Callback is passedstate
object containing:totalHorizontalPages
: total number of horizontal pages, rounded to the nearest integer.totalVerticalPages
: total number of vertical pages, rounded to the nearest integer.currentHorizontalPage
: the current horizontal page, rounded to the nearest integer.currentVerticalPage
: the current vertical page, rounded to the nearest integer.
onInitialization
:function(ref)
: Executed once, when the component is initially mounted and only once the dimensions have been measured. Useful, for example, for scrolling to a specific page once the component is mounted.
Attributes:
ref.scrollX
: current horizontal scroll offsetref.scrollY
: current vertical scroll offsetref.state.currentHorizontalPage
: as defined aboveref.state.currentVerticalPage
: as defined aboveref.state.totalHorizontalPages
: as defined aboveref.state.totalVerticalPages
: as defined above
Methods:
ref.scrollToPage(horizontal, vertical, animated)
: Scroll to a specific page
License
(c) 2015 Ricky Reusser. MIT License.
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago