1.1.0 • Published 6 years ago

r-img-lazyload v1.1.0

Weekly downloads
30
License
MIT
Repository
github
Last release
6 years ago

react-img-lazyload

npm version npm downloads npm license

React module for lazy-loading images in your react.js applications. Some of goals of this project worth noting include:

  • 中文文档
  • Based on vue-lazyLoad rewriting
  • Be lightweight, powerful and easy to use
  • Work on any image type
  • Add loading class while image is loading
  • Applicable to any style of layout
  • Supports both of React

Installation

npm

$ npm install r-img-lazyload

Usage

use component work

import React, { Component } from 'react';
import Lazyload from 'r-img-lazyload';

export default class extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        const config = {
            options: {
                error: 'errorPic',
                loading: 'loadingPic'
            },
            src: ''
        };
        return <Lazyload {...config} />;
    }
}

use raw HTML work

    <Lazyload src="http://xxxx.com/pic.png" tag="div" />

recommend Package component to use

// Lazy.jsx
import React, { Component } from 'react';
import Lazyload from 'r-img-lazyload';

const pic = require('xxxx/assets/img/defalut_pic.png');

export default class extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        const config = {
            options: {
                error: pic,
                loading: pic
            },
            ...this.props
        };
        return <Lazyload {...config} />;
    }
}
// HomePage.jsx
import React, { Component } from 'react';
import Lazy form 'xxx/Lazy.jsx';

function HomePage() {
    return <lazy className="pic" src="xxxx.png" onClick="// todo..."/>
}

Constructor Options

keydescriptiondefaultoptions
srcPicture address‘’String
tagBackground image using the label‘’String
optionsOther configuration{}Other configuration

Other configuration

keydescriptiondefaultoptions
errorsrc of the image upon load fail‘’String
loadingsrc of the image while loading‘’String
listenEventsevents that you want React listen for['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove']Object
throttleWaitthrottle wait200Number

Desired Listen Events

You can configure which events you want v-img-lazyload by passing in an array of listener names.

import React, { Component } from 'react';
import Lazyload from 'r-img-lazyload';

export default class extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        const config = {
            options: {
                error: 'errorPic',
                loading: 'loadingPic',
                // the default is ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend']
                listenEvents: [ 'scroll' ]
            },
            src: ''
        };
        return <Lazyload {...config} />;
    }
}

CSS state

here are three states while img loading loadingloadederror

<img src="imgUrl" lazy="loading">
<img src="imgUrl" lazy="loaded">
<img src="imgUrl" lazy="error">
<style>
  img[lazy=loading] {
    /*your style here*/
  }
  img[lazy=error] {
    /*your style here*/
  }
  img[lazy=loaded] {
    /*your style here*/
  }
  /*
  or background-image
  */
  .yourclass[lazy=loading] {
    /*your style here*/
  }
  .yourclass[lazy=error] {
    /*your style here*/
  }
  .yourclass[lazy=loaded] {
    /*your style here*/
  }
</style>

Todo

  • observer
  • life cycle

License

The MIT License