返回
React 16.x折腾记(三):Mobx实现动态tab水平菜单关联侧边栏
前端
2023-10-26 07:30:48
前言
随着前端技术的发展,React 16.x已经成为众多开发者构建前端应用的首选框架。Mobx作为一个状态管理库,也受到广泛的欢迎。在本文中,我们将结合Mobx,实现一个比较靠谱的动态tab水平菜单,同时关联侧边栏。
正文
1. 项目准备
在开始之前,我们需要创建一个React项目。可以使用以下命令:
npx create-react-app react-tab-menu
然后,进入项目目录,安装Mobx:
npm install mobx
2. 构建Mobx Store
接下来,我们需要创建一个Mobx Store来管理tab和侧边栏的状态。在src
目录下创建一个store.js
文件,并输入以下代码:
import { observable, action } from "mobx";
class Store {
@observable tabs = [];
@observable selectedTab = null;
@observable sidebarOpen = false;
@action addTab(tab) {
this.tabs.push(tab);
}
@action selectTab(tab) {
this.selectedTab = tab;
}
@action toggleSidebar() {
this.sidebarOpen = !this.sidebarOpen;
}
}
export default new Store();
3. 构建Tab组件
接下来,我们需要创建一个Tab组件。在src
目录下创建一个Tab.js
文件,并输入以下代码:
import React, { useContext } from "react";
import { StoreContext } from "./store";
const Tab = ({ tab }) => {
const store = useContext(StoreContext);
const handleClick = () => {
store.selectTab(tab);
};
return (
<li className="tab-item" onClick={handleClick}>
{tab.title}
</li>
);
};
export default Tab;
4. 构建TabMenu组件
接下来,我们需要创建一个TabMenu组件。在src
目录下创建一个TabMenu.js
文件,并输入以下代码:
import React, { useContext } from "react";
import { StoreContext } from "./store";
import Tab from "./Tab";
const TabMenu = () => {
const store = useContext(StoreContext);
return (
<ul className="tab-menu">
{store.tabs.map((tab) => (
<Tab key={tab.id} tab={tab} />
))}
</ul>
);
};
export default TabMenu;
5. 构建Sidebar组件
接下来,我们需要创建一个Sidebar组件。在src
目录下创建一个Sidebar.js
文件,并输入以下代码:
import React, { useContext } from "react";
import { StoreContext } from "./store";
const Sidebar = () => {
const store = useContext(StoreContext);
return (
<div className="sidebar">
<ul>
{store.tabs.map((tab) => (
<li key={tab.id}>{tab.title}</li>
))}
</ul>
</div>
);
};
export default Sidebar;
6. 构建App组件
最后,我们需要创建一个App组件。在src
目录下创建一个App.js
文件,并输入以下代码:
import React, { useState, useEffect } from "react";
import { StoreContext } from "./store";
import TabMenu from "./TabMenu";
import Sidebar from "./Sidebar";
const App = () => {
const [store] = useState(new Store());
useEffect(() => {
store.addTab({ id: 1, title: "Tab 1" });
store.addTab({ id: 2, title: "Tab 2" });
store.addTab({ id: 3, title: "Tab 3" });
}, []);
return (
<StoreContext.Provider value={store}>
<div className="app">
<TabMenu />
<Sidebar />
</div>
</StoreContext.Provider>
);
};
export default App;
7. 运行项目
现在,我们可以运行项目了。在终端中输入以下命令:
npm start
然后,打开浏览器访问http://localhost:3000
,就可以看到我们的动态tab水平菜单和侧边栏了。
结语
本文介绍了如何结合Mobx,实现一个比较靠谱的动态tab水平菜单,同时关联侧边栏。希望对大家有所帮助。