8.0.6 • Published 7 years ago

react-smooth-scrollbar v8.0.6

Weekly downloads
3,924
License
MIT
Repository
github
Last release
7 years ago

react-smooth-scrollbar

smooth-scrollbar for react projects.

Requirements

React 0.14+

Install

npm install react-smooth-scrollbar smooth-scrollbar --save

Demo

http://idiotwu.github.io/react-smooth-scrollbar/

Usage

import React from 'react';
import ReactDOM from 'react-dom';
import Scrollbar from 'react-smooth-scrollbar';

class App extends React.Component {
    render() {
        return (
            <Scrollbar
                damping={number},
                thumbMinSize={number},
                syncCallbacks={boolean},
                renderByPixels={boolean},
                alwaysShowTracks={boolean},
                continuousScrolling={boolean},
                wheelEventTarget={element},
                plugins={object},
                onScroll={func},
            >
                your contents here...
            </Scrollbar>
        );
    }
}

ReactDOM.render(<App />, document.body);

Available Options

parametertypedefaultdescription
dampingnumber0.1Momentum reduction damping factor, a float value between (0, 1). The lower the value is, the more smooth the scrolling will be (also the more paint frames).
thumbMinSizenumber20Minimal size for scrollbar thumbs.
renderByPixelsbooleantrueRender every frame in integer pixel values, set to true to improve scrolling performance.
alwaysShowTracksbooleanfalseKeep scrollbar tracks visible.
continuousScrollingbooleantrueSet to true to allow outer scrollbars continue scrolling when current scrollbar reaches edge.
wheelEventTargetEventTargetnullElement to be used as a listener for mouse wheel scroll events. By default, the container element is used. This option will be useful for dealing with fixed elements.
pluginsobject{}Options for plugins, see Plugin System.

Confusing with the option field? Try edit tool here!

Using Scrollbar Plugins

import { Component } from 'react';
import PropTypes from 'prop-types';
import SmoothScrollbar from 'smooth-scrollbar';
import OverscrollPlugin from 'smooth-scrollbar/plugins/overflow';
import Scrollbar from 'react-smooth-scrollbar';

SmoothScrollbar.use(OverscrollPlugin);

class App2 extends Component {
    render() {
        return (
            <Scrollbar> ... </Scrollbar>
        );
    }
}

Get Scrollbar Instance

  1. Use ref in parent component:

    class Parent extends React.Component {
        componentDidMount() {
            const { scrollbar } = this.$container;
        }
    
        render() {
            return (
                <Scrollbar ref={c => this.$container = c}>
                    your content...
                </Scrollbar>
            );
        }
    }
  2. Use Context in child component:

    class Child extends React.Component {
        static contextTypes = {
            getScrollbar: React.PropTypes.func
        };
    
        componentDidMount() {
            this.context.getScrollbar((scrollbar) => {
                // ...
            });
        }
    
        render() {
            return <div> this is child component. </div>;
        }
    }
    
    class App extends React.Component {
        render(){
            return (
                <Scrollbar>
                    <Child />
                </Scrollbar>
            );
        }
    }

APIs

Documents

License

MIT.

Sponsor

8.0.6

7 years ago

8.0.5

7 years ago

8.0.4

7 years ago

8.0.3

7 years ago

8.0.2

7 years ago

8.0.1

7 years ago

7.2.2

7 years ago

7.2.1

7 years ago

7.2.0

8 years ago

7.1.2

8 years ago

7.1.1

8 years ago

7.1.0

8 years ago

7.0.0

8 years ago

6.4.0

8 years ago

6.3.3

8 years ago

6.3.2

8 years ago

6.3.1

8 years ago

6.3.0

8 years ago

6.2.0

8 years ago

6.1.0

8 years ago

6.0.0

8 years ago

5.6.0

8 years ago

5.5.0

8 years ago

5.4.0

8 years ago

5.3.0

8 years ago

5.2.1

8 years ago

5.2.0

8 years ago

5.0.1

8 years ago

5.0.0

8 years ago

4.2.1

8 years ago

4.2.0

8 years ago

4.1.0

8 years ago

4.0.0

8 years ago

2.0.0

8 years ago

1.0.0

8 years ago