【问题标题】:Programatically generating grid items with react-grid-layout使用 react-grid-layout 以编程方式生成网格项
【发布时间】:2016-09-19 07:25:06
【问题描述】:

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

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

示例

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 行,依此类推,无论集合中有多少项目。

非常感谢,感谢您的帮助。

【问题讨论】:

    标签: reactjs meteor react-grid-layout


    【解决方案1】:

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

    <Item key={x} _grid={{x: x%4, y: 0, w: 1, h: 2}} />

    几个项目将获得相同的y 值,但这对于 react-grid-layout 来说不是问题。 x 值将从 0 变为 3。

    【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签