ag-grid 服务器端无限滚动访问道具
ag-grid server side infinite scrolling accessing props
我正在尝试按照他们的文档 here 中的描述实施 ag-grid 服务器端行模型。我想要做的是将 api 调用及其参数作为道具传递给网格组件。问题是当试图通过 this.props 访问道具或通过 this.state 状态时,它们都是未定义的。我的代码如下所示:
onGridReady(params) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
this.gridApi.showLoadingOverlay();
var dataSource = {
rowCount: null,
getRows: function(params) {
setTimeout(function() {
let serviceParams = this.props.dataServiceParams ? this.props.dataServiceParams.slice() : {};
serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
serviceParams.index = // if there is more than 1 page for the pagesize this is the index/page to return.
serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);
this.props.dataService(serviceParams)
.then(out => {
var rowsThisPage = out;
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
params.context.componentParent.gridApi.hideOverlay();
}, 500);
}
};
params.api.setDatasource(dataSource);
};
dataService 属性包含我的 service/api 调用,而 dataServiceParams 包含服务所需的任何参数。我正在添加额外的参数来处理排序、过滤和返回所需数据 page/index。我在这里错过了什么?
您需要使用 Arrow function
来访问父作用域的属性。检查下面的代码 getRows
和 setTimeout
.
var dataSource = {
rowCount: null,
getRows: (params) => {
setTimeout(() => {
let serviceParams = this.props.dataServiceParams ? this.props.dataServiceParams.slice() : {};
serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
serviceParams.index = // if there is more than 1 page for the pagesize this is the index/page to return.
serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);
this.props.dataService(serviceParams)
.then(out => {
var rowsThisPage = out;
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
params.context.componentParent.gridApi.hideOverlay();
}, 500);
}
};
我正在尝试按照他们的文档 here 中的描述实施 ag-grid 服务器端行模型。我想要做的是将 api 调用及其参数作为道具传递给网格组件。问题是当试图通过 this.props 访问道具或通过 this.state 状态时,它们都是未定义的。我的代码如下所示:
onGridReady(params) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
this.gridApi.showLoadingOverlay();
var dataSource = {
rowCount: null,
getRows: function(params) {
setTimeout(function() {
let serviceParams = this.props.dataServiceParams ? this.props.dataServiceParams.slice() : {};
serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
serviceParams.index = // if there is more than 1 page for the pagesize this is the index/page to return.
serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);
this.props.dataService(serviceParams)
.then(out => {
var rowsThisPage = out;
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
params.context.componentParent.gridApi.hideOverlay();
}, 500);
}
};
params.api.setDatasource(dataSource);
};
dataService 属性包含我的 service/api 调用,而 dataServiceParams 包含服务所需的任何参数。我正在添加额外的参数来处理排序、过滤和返回所需数据 page/index。我在这里错过了什么?
您需要使用 Arrow function
来访问父作用域的属性。检查下面的代码 getRows
和 setTimeout
.
var dataSource = {
rowCount: null,
getRows: (params) => {
setTimeout(() => {
let serviceParams = this.props.dataServiceParams ? this.props.dataServiceParams.slice() : {};
serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
serviceParams.index = // if there is more than 1 page for the pagesize this is the index/page to return.
serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);
this.props.dataService(serviceParams)
.then(out => {
var rowsThisPage = out;
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
params.context.componentParent.gridApi.hideOverlay();
}, 500);
}
};