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
$ npm install r-img-lazyload
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..."/>
}
key | description | default | options |
---|---|---|---|
src | Picture address | ‘’ | String |
tag | Background image using the label | ‘’ | String |
options | Other configuration | {} | Other configuration |
key | description | default | options |
---|---|---|---|
error | src of the image upon load fail | ‘’ | String |
loading | src of the image while loading | ‘’ | String |
listenEvents | events that you want React listen for | ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove' ] |
Object |
throttleWait | throttle wait | 200 | Number |
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} />;
}
}
here are three states while img loading loading
、loaded
、error
<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>
- observer
- life cycle