我们喜欢react-redux-grid的许多功能,并即将对其进行评估。我们使用saga来处理所有异步REST调用。关于如何使用redux-grid和sagas的任何建议或建议,我有一个普遍的问题。
背景: 我们在传奇中检索数据并将它们存储在redux存储中并将属性绑定到网格(使用数据)。这意味着我们使用“本地”数据。但由于可能有数千条记录,我们只检索一个子集。举例来说,我们使用自定义pagging组件来解决,该组件触发了saga中新的数据检索,从而更新了data属性。
排序有点像黑客。使用redux-grid,您可以对local或sortSource进行排序。由于我们只加载了所有数据的子集,因此本地不是一个选项。我们发现,我们可以将一个函数传递给“sortingSource”,并且可以调用触发saga / data update的操作:
const remoteSort = (pageIndex, obj, ordering) => {
const sort = ordering.sort
this.props.setOrderBy({
name: sort.property,
direction: sort.direction
})
return new Promise((resolve, reject) => {
resolve({})
})
}
网格:
<Grid
columns={this.props.columnDefinitions}
data={this.props.entities}
plugins={{
PAGER: {
enabled: true,
pagingType: 'local',
pagerComponent: (
<Pagination
totalRecords={this.props.entityCount}
recordsPerPage={this.props.limit}
onPageChange={this.onPageChange}
currentPage={this.props.currentPage}
/>
)
},
COLUMN_MANAGER: {
sortable: {
enabled: true,
method: 'remote',
sortingSource: remoteSort
}
}
}}
stateKey="listViewGrid"
reducerKeys="grid"
/>
它有效,但IMO太多的解决方法,我们甚至得到一个控制台日志警告,因为空洞的承诺。
现在的问题是:有没有更好的方法将传奇与网格结合起来?当然我们可以考虑重写应用程序以按照网格的方式工作(没有传奇)但总的来说我们对redux-saga感到满意。 关于此事的任何意见都表示赞赏!