Grid 宫格
在水平和垂直方向,将布局切分成若干等大的区块。规则
- 区块中的内容应该是同类元素,eg:都是图片,或者都是图标+文字。
代码演示
import { Grid } from 'antd-mobile';
const data = Array.from(new Array(9)).map((_val, i) => ({
icon: 'https://gw.alipayobjects.com/zos/rmsportal/nywPmnTAvTmLusPxHPSu.png',
text: `name${i}`,
}));
const data1 = Array.from(new Array(9)).map(() => ({
icon: 'https://gw.alipayobjects.com/zos/rmsportal/WXoqXTHrSnRcUwEaQgXJ.png',
}));
const GridExample = () => (
<div>
<div className="sub-title">Always square grid item </div>
<Grid data={data} activeStyle={false} />
<div className="sub-title">Grid item adjust accroiding to img size </div>
<Grid data={data} square={false} className="not-square-grid" />
<div className="sub-title">ColumnNum=3 </div>
<Grid data={data} columnNum={3} />
<div className="sub-title">No border</div>
<Grid data={data} hasLine={false} />
<div className="sub-title">Carousel</div>
<Grid data={data} isCarousel onClick={_el => console.log(_el)} />
<div className="sub-title">Custom content</div>
<Grid data={data1}
columnNum={3}
renderItem={dataItem => (
<div style={{ padding: '12.5px' }}>
<img src={dataItem.icon} style={{ width: '75px', height: '75px' }} alt="" />
<div style={{ color: '#888', fontSize: '14px', marginTop: '12px' }}>
<span>I am title..</span>
</div>
</div>
)}
/>
<div className="sub-title">Custom GridCell Style</div>
<Grid data={data1} columnNum={3} itemStyle={{ height: '150px', background: 'rgba(0,0,0,.05)' }} />
</div>
);
ReactDOM.render(<GridExample />, mountNode);
.sub-title {
color: #888;
font-size: 14px;
padding: 15px 0 9px 15px;
}
.not-square-grid .am-grid-icon {
width: 40px;
height: 60px;
}
API
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
data | 传入的菜单数据 | Array<{icon, text}> | [] |
onClick | 点击每个菜单的回调函数 | (el: Object, index: number): void | - |
columnNum | 列数 | number | 4 |
hasLine | 是否有边框 | boolean | true |
isCarousel | 是否跑马灯, | boolean | false |
carouselMaxRow | 如果是跑马灯, 一页跑马灯需要展示的行数 | number | 2 |
renderItem | 自定义每个 grid 条目的创建函数 | (el, index) => React.Node | - |
square | 每个格子是否固定为正方形 | boolean | true |
activeStyle | 点击反馈的自定义样式 (设为 false 时表示禁止点击反馈) | {}/false | {} |
activeClassName | 点击反馈的自定义类名 | string | |
itemStyle | 每个格子自定义样式 | object | {} |
isCarousel = true
模式时,还可以传递 carousel 相关的 API。