Javascript 反应列表项的虚拟化位置

Javascript 反应列表项的虚拟化位置,javascript,html,css,reactjs,react-virtualized,Javascript,Html,Css,Reactjs,React Virtualized,我正在类似的设置中使用React虚拟化,如下面的代码片段。使用CellMeasurer渲染了几个项目。最后一项表示将加载更多项,并且不会正常渲染。此项目具有错误的位置/样式以及与之关联的错误高度。我怎样才能解决这个问题 如果你想玩它,这里有一个Plunkr: var List=ReactVirtualized.List; var CellMeasurer=ReactVirtualized.CellMeasurer; var cellmasurercache=ReactVirtualized.

我正在类似的设置中使用React虚拟化,如下面的代码片段。使用
CellMeasurer
渲染了几个项目。最后一项表示将加载更多项,并且不会正常渲染。此项目具有错误的位置/样式以及与之关联的错误高度。我怎样才能解决这个问题

如果你想玩它,这里有一个Plunkr:

var List=ReactVirtualized.List;
var CellMeasurer=ReactVirtualized.CellMeasurer;
var cellmasurercache=ReactVirtualized.cellmasurercache;
var cache=新的CellMeasureCache({
固定宽度:对,
最小身高:50
});
//将数据列为字符串数组
变量名称列表=[
“布莱恩·沃恩”,
“鲍勃·史密斯”,
“其他人”,
“我讨厌为了名字而编造名字。”
//等等。。。
];
var App=React.createClass({
getInitialState:函数(){
返回{
列表:名称列表
};
},
render:function(){
返回{
var item=this.state.list[index];
让结果;
如果(!项){
控制台日志(索引);
结果=
加载!!!
; }
其他的
结果=
{
{this.state.list[index]}
}
;
返回结果;
}}/>;
}
});
//呈现您的列表
ReactDOM.render(
,
document.getElementById('示例')
);
.List{
边框:1px纯黑;
框大小:边框框;
}
.行{
宽度:100%;
身高:100%;
边框底部:1px纯黑;
显示器:flex;
对齐项目:居中;
填充:0.5雷姆;
框大小:边框框;
}

CellMeasurer
不打算以这种方式仅用于某些行。从外部角度来看,我理解为什么它看起来应该可以正常工作

网格
呈现单元格时-如果它认为正在使用
CellMeasurer
,则它将在
网格
/
列表
中为其提供空间以进行展开。(容器的大小限制了它的大小,即使它是绝对定位的。老实说,我不知道为什么会这样。)

因此,在您的例子中,
Grid
看到最后一行未被测量,认为应该是,并将其定位为0,0


目前最简单的解决方案是将该行也包装在
CellMeasurer
中。

CellMeasurer
不打算以这种方式仅用于某些行。从外部角度来看,我理解为什么它看起来应该可以正常工作

网格
呈现单元格时-如果它认为正在使用
CellMeasurer
,则它将在
网格
/
列表
中为其提供空间以进行展开。(容器的大小限制了它的大小,即使它是绝对定位的。老实说,我不知道为什么会这样。)

因此,在您的例子中,
Grid
看到最后一行未被测量,认为应该是,并将其定位为0,0


目前最简单的解决方案是将该行也包装在CellMeasurer中。

好的,谢谢。我试着这么做是因为你建议用Slack来保存一个DOM度量,但我肯定能接受!好的,谢谢。我试着这么做是因为你建议用Slack来保存一个DOM度量,但我肯定能接受!