使用react-grid-layout以编程方式生成网格项

时间:2016-05-22 11:15:46

标签: reactjs meteor react-grid-layout

我正在使用Meteor和ReactJS开发应用程序。我正在使用react-grid-layout组件来创建项目网格。

问题是需要手动指定每个元素的位置。在我的应用程序中,我基于流星集合生成网格项目,我可能不知道集合中有多少项目。

示例

import React from "react";
import Item from "/ui/components/workspace/item.jsx";
import ReactGridLayout from 'react-grid-layout';

export default class WorkspaceGrid extends React.Component {
  componentDidMount() {

  }

  render() {
    let testCollection = [1,2,3,4,5,6,7,8,9,10]
    return (
      <ReactGridLayout isResizable={false} className="layout" cols={4} width={1200}>
        {testCollection.map((item, x) => 
            <Item key={x} _grid={{x: ?, y: ?, w: 1, h: 2}} />
        )}
      </ReactGridLayout>
    )
  }

}

在上面的示例中,网格每行应该有4列,但是如何指定xy值,以便在testCollection项目1-4中排成行1,5,8位于第2行,9-10位于第3行,依此类推,因为该系列中有许多项目。

非常感谢,非常感谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,react-grid-layout将参数"babel": "^6.5.2"设置为verticalCompact,这意味着如果多个项目获得相同的true值,则它将垂直压缩。我想你可以写:

y

几个项目将获得相同的 <Item key={x} _grid={{x: x%4, y: 0, w: 1, h: 2}} /> 值,但这对于react-grid-layout来说不是问题。 x值将从0变为3。