@@ -28,8 +28,9 @@ export default class extends Component {
2828 static propTypes = {
2929 axis : PropTypes . oneOf ( [ 'x' , 'y' ] ) ,
3030 initialIndex : PropTypes . number ,
31- itemSizeGetter : PropTypes . func ,
3231 itemRenderer : PropTypes . func ,
32+ itemSizeEstimator : PropTypes . func ,
33+ itemSizeGetter : PropTypes . func ,
3334 itemsRenderer : PropTypes . func ,
3435 length : PropTypes . number ,
3536 pageSize : PropTypes . number ,
@@ -41,13 +42,10 @@ export default class extends Component {
4142
4243 static defaultProps = {
4344 axis : 'y' ,
44- initialIndex : null ,
45- itemSizeGetter : null ,
4645 itemRenderer : ( index , key ) => < div key = { key } > { index } </ div > ,
4746 itemsRenderer : ( items , ref ) => < div ref = { ref } > { items } </ div > ,
4847 length : 0 ,
4948 pageSize : 10 ,
50- scrollParentGetter : null ,
5149 threshold : 100 ,
5250 type : 'simple' ,
5351 useTranslate3d : false
@@ -323,7 +321,7 @@ export default class extends Component {
323321
324322 getSizeOf ( index ) {
325323 const { cache, items} = this ;
326- const { axis, itemSizeGetter, type} = this . props ;
324+ const { axis, itemSizeGetter, itemSizeEstimator , type} = this . props ;
327325 const { from, itemSize, size} = this . state ;
328326
329327 // Try the static itemSize.
@@ -340,6 +338,9 @@ export default class extends Component {
340338 const itemEl = findDOMNode ( items ) . children [ index - from ] ;
341339 if ( itemEl ) return itemEl [ OFFSET_SIZE_KEYS [ axis ] ] ;
342340 }
341+
342+ // Try the itemSizeEstimator.
343+ if ( itemSizeEstimator ) return itemSizeEstimator ( index , cache ) ;
343344 }
344345
345346 constrain ( from , size , itemsPerRow , { length, pageSize, type} ) {
0 commit comments