Grid 九宫格

在水平和垂直方向,将布局切分成若干等大的区块。

规则

  • 区块中的内容应该是同类元素,eg:都是图片,或者都是图标+文字。

代码演示

示例

  1. import { Grid } from 'antd-mobile';
  2. const data = Array.from(new Array(9)).map((_val, i) => ({
  3. icon: 'https://os.alipayobjects.com/rmsportal/IptWdCkrtkAUfjE.png',
  4. text: `名字${i}`,
  5. }));
  6. const data1 = Array.from(new Array(5)).map((_val, i) => ({
  7. img: 'https://zos.alipayobjects.com/rmsportal/wIjMDnsrDoPPcIV.png',
  8. text: `名字${i}`,
  9. }));
  10. const GridExample = React.createClass({
  11. render() {
  12. return (<div>
  13. <Grid data={data} />
  14. <p style={{ margin: 10, color: '#999' }}>无边线</p>
  15. <Grid data={data} columnNum={3} hasLine={false} />
  16. <p style={{ margin: 10, color: '#999' }}>走马灯</p>
  17. <Grid data={data} columnNum={3} isCarousel onClick={(_el, index) => alert(index)} />
  18. <p style={{ margin: 10, color: '#999' }}>自定义格子内容</p>
  19. <Grid data={data1} columnNum={3} hasLine={false}
  20. renderItem={(dataItem, index) => (
  21. <div style={{ margin: '0.16rem', background: '#f7f7f7', textAlign: 'center' }}>
  22. <div style={{ background: 'rgba(0, 0, 0, 0.1)', padding: '0.08rem' }}>
  23. <span>{index + 1}.{dataItem.text}</span>
  24. </div>
  25. <img src={dataItem.img} style={{ width: '80%', margin: '0.12rem' }} />
  26. </div>
  27. )}
  28. />
  29. </div>);
  30. },
  31. });
  32. ReactDOM.render(<GridExample />, mountNode);

Grid九宫格 - 图1

API ( 适用平台:WEB、React-Native )

成员说明类型默认值
data传入的菜单数据Array<{icon, text}>[]
onClick点击每个菜单的回调函数(el: Object, index: number): void-
columnNum列数number4
hasLine是否有边框booleantrue
isCarousel是否跑马灯,booleanfalse
carouselMaxRow如果是跑马灯, 一页跑马灯需要展示的行数number2
renderItem自定义每个 grid 条目的创建函数(el, index) => React.Node-