使用react-redux-grid和redux-saga

时间:2017-03-27 10:45:53

标签: redux-saga

我们喜欢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感到满意。 关于此事的任何意见都表示赞赏!

0 个答案:

没有答案