使用高阶组件
return (
<BasicLayout
sideMenu={
{
items: this.state.items,
Link: Link,
mode: 'default',
openCurrentOnly: false,
onCollapse: this.onCollapsed,
selectedKeys: [location.pathname.split('/')[1]]
}}
>
<Authority type="page" code={
code}>
<Breadcrumb>{
breadcrumbItems}</Breadcrumb>
{
this.props.children}
</Authority>
</BasicLayout>
import React from 'react';
import {
connect } from 'react-redux';
import Store from '~/store/createStore';
@connect(state => ({
permission: state.role.permission
}))
class Authority extends React.PureComponent {
render() {
const {
permission, code, type, isPublic } = this.props;
if (
isPublic || ["abc", "efg" ].indexOf(code) > -1
) {
return this.props.children;
}
if (permission && permission.indexOf(code) > -1) {
return this.props.children;
} else if (type === 'page') {
return <page type="404" title="403" description="Forbidden" />;
} else {
return null;
}
}
}
Authority.propTypes = {
type: PropTypes.string,
isPublic: PropTypes.bool
};
export function getAuthority(code) {
const permission = Store.getState().role.permission;
return permission && permission.indexOf(code) > -1;
}
export function getItsmAuthority() {
return Store.getState().role.authority;
}
export default Authority;