UNPKG

react-masonry-component2

Version:

react 的瀑布流组件库,支持 columns 布局、弹性布局、绝对定位布局三种方法实现

36 lines (33 loc) 1.26 kB
import { minBy } from 'lodash-es'; import React from 'react'; var getColumns = function (children, columnCount) { var columns = Array.from({ length: columnCount }, function () { return ({ children: [], }); }); React.Children.forEach(children, function (child, index) { if (child && React.isValidElement(child)) { columns[index % columnCount].children.push(child); } }); return columns; }; var getColumnsSortWithHeight = function (children, columnCount) { var columns = Array.from({ length: columnCount }, function () { return ({ height: 0, children: [], }); }); React.Children.forEach(children, function (child, index) { if (child && React.isValidElement(child)) { if (index < columns.length) { columns[index % columnCount].children.push(child); columns[index % columnCount].height += child.props.height; return; } var minHeightColumn = minBy(columns, function (a) { return a.height; }); minHeightColumn.children.push(child); minHeightColumn.height += child.props.height; } }); return columns; }; export { getColumns, getColumnsSortWithHeight };