头部组件
用法
要在您的应用程序中使用 Header 组件,请按照以下步骤操作:
-
导入组件
import Header from './path/to/Header';
-
可选
定义导航项以及用于活动导航项和 Neo4j 连接状态的状态管理逻辑
const navItems = ['Home', 'About', 'Contact'];
const [activeNavItem, setActiveNavItem] = useState(navItems[0]);
const [connectNeo4j, setConnectNeo4j] = useState(false);
const [isConnectionModalOpen, setIsConnectionModalOpen] = useState(false);
-
使用所需的属性渲染
Header
组件
//
<Header
title="My Application"
navItems={navItems}
activeNavItem={activeNavItem}
setActiveNavItem={setActiveNavItem}
useNeo4jConnect={true}
connectNeo4j={connectNeo4j}
setConnectNeo4j={setConnectNeo4j}
openConnectionModal={() => setIsConnectionModalOpen(true)}
userHeader={true}
/>
组件属性
Header 组件接受多个属性用于自定义和功能设置
名称 | 描述 | 必填 |
---|---|---|
|
您的应用程序的标题/名称,将显示在头部。 |
是 |
|
导航项列表。 |
否 |
|
当前活动/选中的导航项。 |
否 |
|
设置活动导航项的函数。 |
否 |
|
用于启用或禁用 Neo4j 连接功能的布尔值。 |
否 |
|
如果 |
否 |
|
如果 |
否 |
|
如果 |
否 |
|
用于在头部显示或隐藏用户部分的布尔值。 |
否 |
关键组件
主题切换
头部包含一个主题切换开关,允许用户在明亮模式和暗黑模式之间切换。它使用 ThemeWrapperContext
来访问和修改应用程序的主题状态。
const themeUtils = React.useContext(ThemeWrapperContext);
const [themeMode, setThemeMode] = useState<string>(themeUtils.colorMode);
const toggleColorMode = () => {
setThemeMode((prevThemeMode) => {
return prevThemeMode === 'light' ? 'dark' : 'light';
});
themeUtils.toggleColorMode();
};
// ...
<IconButton aria-label='Toggle Dark mode' clean size='large' onClick={toggleColorMode}>
{themeMode === 'dark' ? (
<span role='img' aria-label='sun'>
<SunIconOutline />
</span>
) : (
<span role='img' aria-label='moon'>
<MoonIconOutline />
</span>
)}
</IconButton>
导航标签页
导航使用 @neo4j-ndl/react
中的 Tabs
组件处理,每个 navItem
都渲染为一个标签页。活动的导航项会被高亮显示,切换标签页会相应地更新应用程序的状态。
<section className='flex w-1/3 shrink-0 grow-0 justify-center items-center mb-[-26px]'>
<Tabs size='large' fill='underline' onChange={(e) => setActiveNavItem(e)} value={activeNavItem}>
{navItems.map((item) => (
<Tabs.Tab tabId={item} key={item}>
{item}
</Tabs.Tab>
))}
</Tabs>
</section>
Neo4j 连接
如果 useNeo4jConnect
为 true,则 Switch
组件控制与 Neo4j 数据库的连接。切换此开关可以触发连接数据库的模态框,该操作由 openConnectionModal
属性函数管理。
{useNeo4jConnect ? (
<Switch
checked={connectNeo4j}
onChange={(e) => {
if (e.target.checked) {
openConnectionModal();
} else {
setConnectNeo4j(false);
}
}}
disabled={false}
fluid={true}
label={`Connect${connectNeo4j ? 'ed' : ''} to Neo4j`}
labelBefore={true}
/>
) : null}