diff --git a/VirtualScrollList.js b/VirtualScrollList.js
index 15be53d..42714e7 100644
--- a/VirtualScrollList.js
+++ b/VirtualScrollList.js
@@ -5,6 +5,7 @@
*/
import React from 'react';
+import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import { virtualScrollDriver } from 'dynamic-virtual-scroll';
@@ -33,16 +34,28 @@ export class VirtualScrollList extends React.Component
scrollTimes: 0,
}
+ setItemRef = []
+ itemRefs = []
+
+ makeRef(i)
+ {
+ this.setItemRef[i] = (e) => this.itemRefs[i] = e;
+ }
+
renderItems(start, count, is_end)
{
let r = [];
for (let i = 0; i < count; i++)
{
- r.push(
-
- {this.props.renderItem(i+start)}
-
- );
+ let item = this.props.renderItem(i+start);
+ if (item)
+ {
+ if (!this.setItemRef[i+start])
+ {
+ this.makeRef(i+start);
+ }
+ r.push();
+ }
}
return r;
}
@@ -93,9 +106,9 @@ export class VirtualScrollList extends React.Component
getRenderedItemHeight = (index) =>
{
- if (this.viewport)
+ if (this.itemRefs[index])
{
- const e = this.viewport.querySelector('div[data-item="'+index+'"]');
+ const e = ReactDOM.findDOMNode(this.itemRefs[index]);
if (e)
{
return e.getBoundingClientRect().height;
@@ -127,7 +140,7 @@ export class VirtualScrollList extends React.Component
}
else
{
- const el = this.viewport.querySelector('div[data-item="'+Math.floor(pos)+'"]');
+ const el = ReactDOM.findDOMNode(this.itemRefs[Math.floor(pos)]);
if (el)
{
this.viewport.scrollTop = el.offsetTop - (this.props.headerHeight||0) + el.offsetHeight*(pos-Math.floor(pos));
diff --git a/package.json b/package.json
index 6db0ec4..c3a4ee1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "dynamic-virtual-scroll",
- "version": "1.0.7",
+ "version": "1.0.8",
"author": {
"name": "Vitaliy Filippov",
"email": "vitalif@yourcmc.ru",