1
1
import React , { Component } from 'react' ;
2
- import debounce from 'lodash/debounce' ;
3
- import get from 'lodash/get' ;
4
2
import getResponsiveImage from './utils/getResponsiveImage' ;
3
+ import debounce from './utils/debounce' ;
4
+ import Image from './ImageServer' ;
5
5
6
6
/**
7
7
* Pic Component
@@ -10,7 +10,11 @@ export default class Pic extends Component {
10
10
constructor ( props ) {
11
11
super ( props ) ;
12
12
this . state = {
13
- image : get ( props . images , props . defaultIndex )
13
+ image : props . images [ props . defaultIndex ] ,
14
+ noScriptImage : props . noscriptIndex ?
15
+ props . images [ props . noScriptIndex ] :
16
+ props . images [ props . images . length - 1 ] ,
17
+ isMounted : false
14
18
} ;
15
19
16
20
this . setResponsiveImage = this . setResponsiveImage . bind ( this ) ;
@@ -19,9 +23,12 @@ export default class Pic extends Component {
19
23
componentDidMount ( ) {
20
24
this . setResponsiveImage ( ) ;
21
25
26
+ this . setState ( {
27
+ isMounted : true
28
+ } ) ;
29
+
22
30
// set responsive image on resize
23
31
window . addEventListener ( 'resize' , debounce ( this . setResponsiveImage , 150 ) ) ;
24
-
25
32
}
26
33
27
34
/**
@@ -46,18 +53,15 @@ export default class Pic extends Component {
46
53
}
47
54
48
55
render ( ) {
49
- const { alt, style } = this . props ;
50
-
51
56
if ( ! this . state . image ) {
52
57
return null ;
53
58
}
54
59
55
60
return (
56
- < div ref = 'base' >
57
- < img
58
- alt = { alt }
59
- style = { style }
60
- src = { this . state . image . url } />
61
+ < div ref = 'base' style = { {
62
+ position : 'relative'
63
+ } } >
64
+ < Image { ...this . props } { ...this . state } />
61
65
</ div >
62
66
) ;
63
67
}
@@ -103,5 +107,6 @@ Pic.propTypes = {
103
107
}
104
108
} ,
105
109
defaultIndex : React . PropTypes . number , // The default image to render
110
+ noscriptIndex : React . PropTypes . number , // The default image to render on noscript
106
111
alt : React . PropTypes . string
107
112
} ;
0 commit comments