maycur-business
Version:
maycur business react components of web
110 lines (82 loc) • 2.85 kB
Markdown
#### MkLayout 布局组件
## API
| 属性 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| pathArr | 页面路径 | Array | 无 |
| setMenus | 返回顶部menu数据的方法 | Function | 无 |
| setSiderMenus | 返回侧边栏menu数据的方法 | Function | 无 |
| renderMenu | 渲染顶部menu | Function | 无 |
| renderSiderMenu | 渲染侧边栏menu | Function | 无 |
| renderContent | 渲染页面 | Function | 无 |
| noSider | 是否显示侧边菜单 | Boolean | 无 |
```js static
class example {
constructor(){
}
renderContent = () => {
const { match } = this.props;
return (
<div className={styles.content}>
<NormalRouter match={match} />
</div>
);
}
renderMenu = (menu) => {
const { personalInfo } = this.props;
const menus = localstorage.getItem('mkApp.menus');
const pattern = new RegExp('^' + menu.permission);
const arr = _.filter(menus, menu => {
return pattern.test(menu);
}) || [];
return (
<Link to={menu.path}>
{menu.menuName}
</Link>
)
}
renderSiderMenu = (menu) => {
const { menus } = this.props;
const index = _.indexOf(menus, menu.permission);
return (
(menu.permission && index > -1 || !menu.permission) ?
(
menu.hasSub ?
<span>
{menu.icon ? <span className={ `fm ${menu.icon}` }></span> : null}
<span>{menu.menuName}</span>
</span> :
<Link to={menu.path}>
{menu.icon ? <span className={ `fm ${menu.icon}` }></span> : null}
<span>{menu.menuName}</span>
</Link>
) : null
);
}
setMenus = () => {
const { leftMenus, rightMenus } = routerList.fetchRouter();
return {
leftMenus,
rightMenus
};
}
setSiderMenus = () => {
const { location: { pathname } } = this.props;
const { leftMenus, rightMenus } = routerList.fetchRouter();
const pathArr = pathname.split('/');
const menuName = pathArr[1] || 'home';
const currentMenu = _.filter(leftMenus.concat(rightMenus), { name: menuName })[0] || {};
const siderMenus = currentMenu.routes || [];
return siderMenus;
}
render(){
return <MkLayout
setMenus={this.setMenus}
setSiderMenus={this.setSiderMenus}
renderMenu={this.renderMenu}
renderSiderMenu={this.renderSiderMenu}
renderContent={this.renderContent}
pathArr={pathArr}
/>
}
}
```