React.js 和丰富的数据网格组件或至少破解 [2015]

React.js and rich datagrid components OR at least hack [2015]

之前,我们使用 jqGrid。 后来我们搬到 Backbone.js,开始使用 Backgrid

现在,我们正在评估将 Backbone.Views 移动到 React 组件,我们找不到任何提到的丰富的网格插件/附加组件。

基本上,我们需要您可能想象的一切,选择、过滤、分页、编辑、排序、子网格...开箱即用 :) 我知道我们可以制作自己的 table 组件,添加排序和东西,但这对我们来说太过分了。我们更希望有一些 "reuse" :)

我在 Google 上遗漏了一些网格组件吗?

是否有一些(令人讨厌的)方式使用一些旧的 DOM 依赖,jquery,backbone.js 东西与 React?

您可以在 React 中使用任何普通的 javascript 库。即使它直接更改了 DOM。一个例外是这个库应该只改变它自己的 DOM。 您可以 "disable" React 组件。首次渲染后,React 将无法使用此组件。

React.createClass({
    componentDidMount: function() {
        myNativeJsGrid.init({
            domElem: this.getDOMNode(),
            data: props,
            onRowRemove: function(row){
                this.props.onRowRemove(row);
            }.bind(this)
        });
    },
    shouldComponentUpdate: function(props) {
        myNativeJsGrid.update({
            domElem: this.getDOMNode(),
            data: props
        });
        return false;
    },
    render: function() {
        return React.DOM.div();
    }
});

shouldComponentUpdate 中注释 return false;。它向 React 表明它不应该更新 DOM 中的任何内容(我们手动进行)。

componentDidMountshouldComponentUpdate 的实现取决于网格 API。但想法是你应该:

  • componentDidMount

  • 中初始化网格
  • 更新 shouldComponentUpdate

  • 中的网格
  • 使用内部网格事件从 props 调用函数以在必要时更新数据

开始使用:Griddle 并且在 NPM 中也可用。

  1. 自定义格式
  2. 无限滚动
  3. 自定义样式

npm install griddle-react --save

查看 http://zippyui.github.io/react-datagrid/#/,这是一个不错的网格,内置了很多功能

ReactDataGrid 是 React 的数据网格,具有许多提到的功能,即排序、过滤、选择、自定义格式化程序和编辑器、复制和粘贴、向下拖动单元格、冻结列。分页和子网格在路线图上。看看

还有http://allenfang.github.io/react-bootstrap-table 完全建立在 Bootstrap 个表上。