页眉组件
用法
要在应用程序中使用页眉组件,请按照以下步骤操作
-
导入组件
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}
/>
组件道具
页眉组件接受多个道具,用于定制和功能
名称 | 描述 | 必需 |
---|---|---|
|
应用程序的标题/名称,将在页眉中显示。 |
是 |
|
导航项列表。 |
否 |
|
当前活动/选择的导航项。 |
否 |
|
设置活动导航项的函数。 |
否 |
|
布尔值,用于启用或禁用 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}