javascript - 多个 sizeColumnsToFit() ag-grid React
问题描述
我的组件中有三个不同的 ag-grid React 表,其中包含特定的gridOptions
和columnDefs
. 我希望所有三个表都自动调整列大小以适应窗口调整大小的内容。
我使用onGridReady
和sizeColumnsToFit()
函数setTimeout
来实现这一点。但问题是只有最后声明的ag-grid
表会自动调整大小(好像之前的声明被忽略了):
let gridOptions1 = {
columnDefs: columnDefs1,
onGridReady(params) {
console.log(params)
window.onresize = () => {
setTimeout(() => {
params.api.sizeColumnsToFit();
}, 500);
};
},
onFirstDataRendered(params) {
params.api.sizeColumnsToFit();
},
};
let gridOptions2 = {
columnDefs: columnDefs2,
onGridReady(params) {
console.log(params)
window.onresize = () => {
setTimeout(() => {
params.api.sizeColumnsToFit();
}, 500);
};
},
onFirstDataRendered(params) {
params.api.sizeColumnsToFit();
},
};
let gridOptions3 = {
columnDefs: columnDefs3,
onGridReady(params) {
console.log(params)
window.onresize = () => {
setTimeout(() => {
params.api.sizeColumnsToFit();
}, 500);
};
},
onFirstDataRendered(params) {
params.api.sizeColumnsToFit();
},
};
在该示例中,该sizeColumnsToFit()
函数仅适用于第三个网格。
您知道如何为所有表格做到这一点吗?
解决方案
我发现的唯一解决方案是仅使用 onFirstDataRendered 函数(删除 onGridReady)并根据宽度和高度将特定键传递给 agggrid 表:
import React from 'react'
function debounce(fn, ms) {
let timer
return _ => {
clearTimeout(timer)
timer = setTimeout(_ => {
timer = null
fn.apply(this, arguments)
}, ms)
};
}
function MyComponent() {
const [dimensions, setDimensions] = React.useState({
height: window.innerHeight,
width: window.innerWidth
})
React.useEffect(() => {
const debouncedHandleResize = debounce(function handleResize() {
setDimensions({
height: window.innerHeight,
width: window.innerWidth
})
}, 1000)
window.addEventListener('resize', debouncedHandleResize)
return _ => {
window.removeEventListener('resize', debouncedHandleResize)
}
})
return <><AgGridReact
key={dimensions.width + dimensions.height}
rowData={data1}
gridOptions={gridOptions1}
></AgGridReact>
<AgGridReact
key={dimensions.width + dimensions.height + "2"}
rowData={data2}
gridOptions={gridOptions2}
></AgGridReact></>
}
推荐阅读
- python - 如何在 Python 和 BeautifulSoup 中过滤带有类的标签?
- react-native - 按下导航栏上的按钮时导航到其他 StackNavigator 屏幕
- excel - 如何在自定义excel日历中的特定日期和时间范围内获取特定活动
- c# - 需要从主 C# WPF 应用程序向 Process 对象发送 CTRL+C (SIGINT)
- python - ImportError: DLL load failed while importing QtWebEngineWidgets: when running spyder for python
- c++ - 如何使用 Emscripten-1.38.31 (??) 编译 Boost-1.76.0
- python - 如何从已安装的 Pip/Python venv 脚本访问 CLI
- c# - 如何每次将记录输入数据网格第一行
- import - 有没有办法缩短 Next.JS 中的导入位置
- python - Docker 中的 Scrapyd + Django:HTTPConnectionPool (host = '0.0.0.0', port = 6800) 错误