tab国际化
This commit is contained in:
@ -34,7 +34,12 @@ const MenuRender = (item: any, isSubMenu: boolean) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const BreadcrumbRender = (routeBreadcrumb: any, intl: any, history: any, dynamicBreadcrumbName: string | null) => {
|
const BreadcrumbRender = (
|
||||||
|
routeBreadcrumb: any,
|
||||||
|
intl: any,
|
||||||
|
history: any,
|
||||||
|
dynamicBreadcrumbName: string | null,
|
||||||
|
) => {
|
||||||
const breadcrumbRoutes = routeBreadcrumb?.routes;
|
const breadcrumbRoutes = routeBreadcrumb?.routes;
|
||||||
return (
|
return (
|
||||||
<Breadcrumb>
|
<Breadcrumb>
|
||||||
@ -43,22 +48,17 @@ const BreadcrumbRender = (routeBreadcrumb: any, intl: any, history: any, dynamic
|
|||||||
history.push('/');
|
history.push('/');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span style={{ cursor: 'pointer' }}>
|
<span style={{ cursor: 'pointer' }}>{intl.formatMessage({ id: 'menu.首页' })}</span>
|
||||||
{intl.formatMessage({ id: 'menu.首页' })}
|
|
||||||
</span>
|
|
||||||
</Breadcrumb.Item>
|
</Breadcrumb.Item>
|
||||||
{breadcrumbRoutes?.map((item: any, index: number) => {
|
{breadcrumbRoutes?.map((item: any, index: number) => {
|
||||||
// 判断是否是最后一个面包屑项且存在动态名称
|
// 判断是否是最后一个面包屑项且存在动态名称
|
||||||
const isLastItem = index === (breadcrumbRoutes.length - 1);
|
const isLastItem = index === breadcrumbRoutes.length - 1;
|
||||||
const displayName = (isLastItem && dynamicBreadcrumbName)
|
const displayName =
|
||||||
? dynamicBreadcrumbName
|
isLastItem && dynamicBreadcrumbName
|
||||||
: intl.formatMessage({ id: `menu.${item.breadcrumbName}` || '' });
|
? dynamicBreadcrumbName
|
||||||
|
: intl.formatMessage({ id: `menu.${item.breadcrumbName}` || '' });
|
||||||
|
|
||||||
return (
|
return <Breadcrumb.Item key={item.path}>{displayName}</Breadcrumb.Item>;
|
||||||
<Breadcrumb.Item key={item.path}>
|
|
||||||
{displayName}
|
|
||||||
</Breadcrumb.Item>
|
|
||||||
);
|
|
||||||
})}
|
})}
|
||||||
</Breadcrumb>
|
</Breadcrumb>
|
||||||
);
|
);
|
||||||
@ -77,10 +77,12 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
|
|||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
||||||
|
console.log('tab model state:', tab);
|
||||||
|
|
||||||
const handleTabChange = (key: string) => {
|
const handleTabChange = (key: string) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'tab/switchTab',
|
type: 'tab/switchTab',
|
||||||
payload: { key }
|
payload: { key },
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -88,7 +90,7 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
|
|||||||
if (action === 'remove') {
|
if (action === 'remove') {
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'tab/closeTab',
|
type: 'tab/closeTab',
|
||||||
payload: { key: targetKey }
|
payload: { key: targetKey },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -118,7 +120,11 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
|
|||||||
// breadcrumbRender: ({ breadcrumb: routeBreadcrumb }) =>
|
// breadcrumbRender: ({ breadcrumb: routeBreadcrumb }) =>
|
||||||
// BreadcrumbRender(routeBreadcrumb, intl, history, breadcrumb.breadcrumbName),
|
// BreadcrumbRender(routeBreadcrumb, intl, history, breadcrumb.breadcrumbName),
|
||||||
}}
|
}}
|
||||||
tabList={tab.tabList}
|
// 将tab.tabList转换为需要的格式,添加国际化处理
|
||||||
|
tabList={tab.tabList.map(item => ({
|
||||||
|
...item,
|
||||||
|
tab: typeof item.tab === 'string' ? intl.formatMessage({ id: `menu.${item.tab}` }) : item.tab
|
||||||
|
}))}
|
||||||
tabProps={{
|
tabProps={{
|
||||||
type: 'editable-card',
|
type: 'editable-card',
|
||||||
hideAdd: true,
|
hideAdd: true,
|
||||||
@ -127,7 +133,9 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
|
|||||||
onEdit: handleTabEdit,
|
onEdit: handleTabEdit,
|
||||||
size: 'small',
|
size: 'small',
|
||||||
tabBarGutter: 6,
|
tabBarGutter: 6,
|
||||||
renderTabBar: (props, DefaultTabBar) => <DefaultTabBar {...props} className="custom-tab-bar" />,
|
renderTabBar: (propsTab, DefaultTabBar) => (
|
||||||
|
<DefaultTabBar {...propsTab} className="custom-tab-bar" />
|
||||||
|
),
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
@ -137,8 +145,9 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default connect(({ breadcrumb, tab }: { breadcrumb: BreadcrumbState; tab: TabModelState }) => ({
|
export default connect(
|
||||||
breadcrumb,
|
({ breadcrumb, tab }: { breadcrumb: BreadcrumbState; tab: TabModelState }) => ({
|
||||||
tab
|
breadcrumb,
|
||||||
}))(BasicLayout);
|
tab,
|
||||||
|
}),
|
||||||
|
)(BasicLayout);
|
||||||
|
@ -168,6 +168,7 @@ const TabModel: TabModelType = {
|
|||||||
payload: {
|
payload: {
|
||||||
path: pathname,
|
path: pathname,
|
||||||
key: pathname,
|
key: pathname,
|
||||||
|
// 直接使用菜单名称作为国际化ID
|
||||||
tab: currentRoute.name || '未命名页面',
|
tab: currentRoute.name || '未命名页面',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user