npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-scroll-paged-view

v2.2.6

Published

Inside scroll, Full page scroll

Downloads

173

Readme

react-scroll-paged-view

以中文查看
If you are interested in my development process, you may read it, I believe you will gain something

scroll view, Inside scroll, Full page scroll, Nesting ScrollView

Installation

npm install react-scroll-paged-view --save

Introduction

Support React(web) & React Native(RN)
Full-page scrolling and in-page scrolling
iOS RN code is perfectly supported. Android provides native package support. Based on RN ScrollView, some code changes are supported
There is no combination of internal scrolling and page scrolling in open source RN projects. Write this component based on need
In addition, the core functional module ViewPaged is also available for use
ScrollView component that provides subassembly packaging that can optionally be used
All pagination loads on demand, don't worry about initial rendering
Infinite pagination is also lazy, minimizing the current index page, even when switching quickly
RN and web animation based on animated library, sharing a set of code processing
Provides renderHeader and renderFooter for tab switching or carousel graphics, etc.
Both components of the web version provide a class variable isTouch for judging whether it is a touch event, thereby distinguishing the scrolling triggered click event.
Support for ssr, 2.1+ version removes the initial measurement size caused by repeated creation and destruction of components, better performance
2.1.3+ version uses ScrollView as a scrolling container when scrolling horizontally and not infinitely, so subviews can be scrolled vertically using ScrollView

Notice

~~Compatible version "react-native": "~0.54.0"~~
~~The react native 0.47 version uses the 0.1.* version~~
Has been perfectly compatible with the above RN version, directly install the latest package
Click events that do not appear in the internal ScrollView component can be replaced with onPressIn
infinite and autoPlay are only available to the ViewPaged component, ScrollPagedView will turn off this option by default

Demo

| IOS | Android | Web | | --- | ------- | --- | | IOS | Android | Web |

Other

What you can achieve depends on what you can imagine.

| Horizontal | Tab | Carousel | | ---------- | --- | -------- | | Horizontal | Tab | Carousel |

Usage

ScrollPagedView

The ScrollPagedView component encapsulates the inner scrolling component based on the ViewPaged component and uses it through the context.

import ScrollPagedView from 'react-scroll-paged-view'
import InsideScrollView from './InsideScrollView'

...
    _onChange = (pageIndex) => {
        ...
    }

    render() {
        return (
            <ScrollPagedView
                onChange={this._onChange}
                onResponder={this._onResponder}
            >
                <InsideScrollView />
                <InsideScrollView />
                <InsideScrollView />
            </ScrollPagedView>
        )
    }
...

Context ScrollView(InsideScrollView)

...
    static contextTypes = {
        ScrollView: PropTypes.func,
    }

    render() {
        const ScrollView = this.context.ScrollView
        return (
            <ScrollView>
                ...
            </ScrollView>
        )
    }
...

ViewPaged

The ViewPaged component is consistent with the ScrollPagedView component and is free to use infinite and autoPlay.

import { ViewPaged } from 'react-scroll-paged-view'

Export module

  • default - ScrollPagedView
  • ViewPaged

Properties

ScrollPagedView

The ScrollPagedView component is based on the ViewPaged component, which can be passed to the props of the ViewPaged as needed. Refer to the props of the ViewPaged component below.

| Name | propType | default value | description | | --- | --- | --- | --- | | withRef | bool | false | Get ViewPaged instance ref, through the component's getViewPagedInstance method |

Context ScrollView

Name | propType | default value | description --- | --- | --- | --- nativeProps(native only) | object | {} | RN scrollView Props webProps(web only) | object | {} | Web scrollView Props

ViewPaged

RN and web have the same props and the performance is consistent

Common Props

| Name | propType | default value | description | | --- | --- | --- | --- | | style | object | {} | ViewPaged style | | initialPage | number | 0 | Initial page index | | vertical | bool | true | Whether to switch the view vertically | | onChange | function | () => {} | Switch paging callbacks, The parameters are currentPage and prevPage | | duration | number | 400 | Animation duration(In milliseconds) | | infinite | bool | false | Whether it is an infinite scroll view | | renderHeader | function/element | undefined | Header Component, The parameters are activeTab, goToPage, width, pos | | renderFooter | function/element | undefined | Footer Component, The parameters are activeTab, goToPage, width, pos | | renderPosition | string | top | Header/Footer direction, There are 4 values, 'top', 'left', 'bottom', 'right' | | autoPlay | bool | false | Whether to auto rotate | | autoPlaySpeed | number | 2000 | Automatic carousel interval (In milliseconds) | | hasAnimation | bool | true | Click to switch whether there is an animation | | locked | bool | false | Whether to allow drag toggle | | preRenderRange | number | 0 | Control the scope of the render component each time it is updated | | isMovingRender | bool | false | Preload the next page when you touch Move |

RN Only Props

| Name | propType | default value | description | | --- | --- | --- | --- | | onStartShouldSetPanResponder | function | () => true | Reference React Native website gesture response system | | onStartShouldSetPanResponderCapture | function | () => false | Reference React Native website gesture response system | | onMoveShouldSetPanResponder | function | () => true | Reference React Native website gesture response system | | onMoveShouldSetPanResponderCapture | function | () => false | Reference React Native website gesture response system | | onPanResponderTerminationRequest | function | () => true | Reference React Native website gesture response system | | onShouldBlockNativeResponder | function | () => true | Reference React Native website gesture response system | | onPanResponderTerminate | function | () => {} | Reference React Native website gesture response system |

TODO

  • [x] Optimize scroll region index, use proxy scrollView to complete
  • [x] Android compatible React Native different versions
  • [x] Support web side components
  • [x] Optimize web side components
  • [x] Optimize web infinite scrolling
  • [x] Perfect web-side ViewPaged
  • [x] Optimize structure, code, unified naming
  • [x] Uniformly compatible with different versions of React Native
  • [x] Record development process
  • [x] Perfect RN end ViewPaged achieves consistency with web performance
  • [x] More props configuration

Changelog

  • 0.1.*
  • 1.0.*
  • 1.1.*
  • 1.2.*
  • 1.3.*
  • 1.5.*
  • 1.6.*
  • 2.0.*
  • 2.1.*

2.0.*

  • Overall refactoring project to improve code reuse for web-side refactoring
  • Added dependency package animated, smoother animation and better performance
  • Use hoc to maximize the reuse of three-terminal public code, each side only retains the code of its own platform
  • Unify the props on the RN and web, and make them consistent
  • Support for ssr server rendering

2.1.*

  • Unified RN and web render methods for ssr
  • A separate render when removing the initial measurement component size
  • Avoid sub-components to be created and destroyed repeatedly, with better performance

2.1.4+

  • Remove configuration files such as. babelrc from the uploaded NPM package, react native will use the Babel configuration in the package, and failing to install these configuration dependencies will report errors

2.2.0+

  • Optimize code structure, precisely control component render times, improve page performance, and provide preload and render scope props