Javascript 当使用新的宽度和列数重新渲染时,如何使react虚拟化集合更新?
下面是我的react组件的Javascript 当使用新的宽度和列数重新渲染时,如何使react虚拟化集合更新?,javascript,reactjs,react-virtualized,Javascript,Reactjs,React Virtualized,下面是我的react组件的cellSizeAndPositionGetter和render函数。调整屏幕大小时,我的屏幕布局不会改变,但我可以通过控制台确认宽度和状态。columnCount(由cellSizeAndPositionGetter使用)正在改变 参数更改(即,宽度)后是否可能触发收集更新?还是我在这里做错了什么 旁注:react virtualized列表会在宽度参数更改时更新 cellSizeAndPositionGetter({index}) { const list
cellSizeAndPositionGetter
和render
函数。调整屏幕大小时,我的屏幕布局不会改变,但我可以通过控制台确认宽度和状态。columnCount
(由cellSizeAndPositionGetter使用)正在改变
参数更改(即,宽度
)后是否可能触发收集
更新?还是我在这里做错了什么
旁注:react virtualized
列表
会在宽度参数更改时更新
cellSizeAndPositionGetter({index}) {
const list = this.state.cardsList;
const columnCount = this.state.columnCount;
const columnPosition = index % (columnCount || 1);
const datum = list[index];
const height = datum.height;
const width = CELL_WIDTH;
const x = columnPosition * (GUTTER_SIZE + width);
const y = this._columnYMap[columnPosition] || 0;
this._columnYMap[columnPosition] = y + height + GUTTER_SIZE;
return ({
height,
width,
x,
y
});
}
宽度的变化是否意味着电池回流?(是否要更改集合
中单元格的大小和位置?)
集合
(与所有其他react虚拟化组件一样)缓存大小和位置信息以提高性能。如果情况发生变化,您需要明确清除这些缓存。参见和。宽度的变化是否意味着电池回流?(是否要更改集合
中单元格的大小和位置?)
集合
(与所有其他react虚拟化组件一样)缓存大小和位置信息以提高性能。如果情况发生变化,您需要明确清除这些缓存。见和
render() {
return (
<div style={styles.subMain}>
<AutoSizer >
{({height, width}) => {
console.log(`width: ${width}`);
console.log(`col count: ${this.state.columnCount}`);
return (
<Collection
cellCount={this.state.cardsList.length}
cellRenderer={this.cellRenderer}
cellSizeAndPositionGetter={this.cellSizeAndPositionGetter}
height={height}
width={width}
overscanRowCount={1}
/>
);
}}
</AutoSizer>
</div>
);
}
updateDimensions() {
this.setState({
screenWidth: window.innerWidth,
columnCount: Math.floor(window.innerWidth / (CELL_WIDTH + GUTTER_SIZE)),
cardsList: [...this.state.cardsList.slice(0, this.state.cardsList.length - 1)]
});
}
componentDidMount() {
...
window.addEventListener("resize", this.updateDimensions);
}