npm.io
0.0.2 • Published 8 years ago

react-reslide

Licence
MIT
Version
0.0.2
Deps
0
Vulns
0
Weekly
0

react-reslide

A slider component for React. Click here for a demo.

Installation

npm

npm install react-reslide --save
yarn
yarn add react-reslide

Usage

Basic
import React from 'react'
import { render } from 'react-dom'

import {
  Reslide,
  Slides,
  Slide,
  Controls,
  PrevButton,
  NextButton
} from 'react-reslide'

const App = () => {
  return (
    <Reslide>
      <Slides>
        <Slide>
          <img src="https://farm9.staticflickr.com/8666/15944458013_1a100cc8e0_z_d.jpg" />
        </Slide>
        <Slide>
          <img src="https://farm2.staticflickr.com/1069/1243141435_eb6bf658f4_z_d.jpg" />
        </Slide>
        <Slide>
          <img src="https://farm9.staticflickr.com/8068/8243640236_72bf897740_z_d.jpg" />
        </Slide>
      </Slides>
      <Controls>
        <PrevButton />
        <NextButton />
      </Controls>
    </Reslide>
  )
}

render(<App />, document.getElementById('root'))
Render props

Slide, PrevButton, and NextButton accept a render prop which grands access to the component's props. This allows for more control on how children is rendered.

import React from 'react'
import { render } from 'react-dom'

import {
  Reslide,
  Slides,
  Slide,
  Controls,
  PrevButton,
  NextButton
} from 'react-reslide'

const App = () => {
  return (
    <Reslide>
      <Slides>
        <Slide>
          <img src="https://farm9.staticflickr.com/8666/15944458013_1a100cc8e0_z_d.jpg" />
        </Slide>
        <Slide>
          <img src="https://farm2.staticflickr.com/1069/1243141435_eb6bf658f4_z_d.jpg" />
        </Slide>
        <Slide
          render={{ children, preloadContent, isActive } => {
            return preloadContent ? (
              <div
                style={{
                  display: isActive ? 'block' : 'none'
                }}
              >
                {children}
              </div>
            ) : isActive ? (
              <div>{children}</div>
            ) : null
          }}
        >
          <img src="https://farm9.staticflickr.com/8068/8243640236_72bf897740_z_d.jpg" />
        </Slide>
      </Slides>
      <Controls>
        <PrevButton
          render={{ children, slide, isDisabled } => {
            return (
              <button
                disabled={isDisbaled}
                onClick={!isDisbaled ? () => slide() : null}
              >
                {children}
              </button>
            )
          }}
        >
          Prev
        </PrevButton>
        <NextButton>Next</NextButton>
      </Controls>
    </Reslide>
  )
}

render(<App />, document.getElementById('root'))

API

Reslide

Root component that wraps Slides and Controls.

Props:

className (string): Set className of underlying div.

preloadContent (bool): If false, content of Slide will load/render when isActive is true. If true, set display to either none (isActive is false) or block (isActive is true).


Slides

Wraps Slide.


Slide

Wraps children (e.g. text, images, or other components).

Props:

className (string): Set className of underlying div.

preloadContent (bool): Prop passed through from Reslide.

isActive (bool): Whether Slide is active (true) or not (false).

render (func): Render prop.


Controls

Wraps PrevButton and NextButton.

Props:

className (string): Set className of underlying div.


PrevButton

Shows previous Slide (if available) when clicked.

Props:

slide (func): Shows previous Slide when called.

isDisabled (bool): Is true when there is no previous Slide.

render (func): Render prop.


NextButton

Shows next Slide (if available) when clicked.

Props:

slide (func): Shows next Slide when called.

isDisabled (bool): Is true when there is no next Slide.

render (func): Render prop.

Keywords