返回

React 16.x 折腾记(四):侧边栏联动 Tab 菜单增强版(结合 Mobx)

前端

引言:

在现代 Web 开发中,React 和 Mobx 是非常流行的前端框架和状态管理库,它们可以帮助我们构建出更强大、更灵活的 Web 应用。本文将介绍如何使用 React 16.x 和 Mobx 来构建一个侧边栏联动 Tab 菜单,并通过 Mobx 管理状态,实现页面的路由管理和状态管理。

一、环境搭建:

  1. 安装 React 16.x 和 Mobx:
npm install react react-dom mobx mobx-react
  1. 创建 React 项目:
create-react-app my-react-app
  1. 导入必要的库:

在项目根目录下的 index.js 文件中,导入 React、ReactDOM、Mobx 和 MobxReact:

import React from 'react';
import ReactDOM from 'react-dom';
import { observable, action } from 'mobx';
import { Provider } from 'mobx-react';
  1. 创建 Mobx Store:

在项目根目录下创建一个 store.js 文件,并创建 Mobx Store:

class Store {
  @observable tabIndex = 0;

  @action
  setTabIndex(index) {
    this.tabIndex = index;
  }
}

const store = new Store();
  1. 创建 React 组件:

在项目根目录下创建一个 App.js 文件,并创建 React 组件:

import React from 'react';
import { Provider } from 'mobx-react';
import store from './store';

const App = () => {
  return (
    <Provider store={store}>
      <div>
        {/* 侧边栏 */}
        <Sidebar />

        {/* Tab 菜单 */}
        <Tabs />
      </div>
    </Provider>
  );
};

export default App;

二、实现侧边栏联动 Tab 菜单:

  1. 创建侧边栏组件:

在项目根目录下创建一个 Sidebar.js 文件,并创建侧边栏组件:

import React, { useContext } from 'react';
import { observer } from 'mobx-react';
import store from './store';

const Sidebar = observer(() => {
  const { tabIndex, setTabIndex } = useContext(store);

  return (
    <ul>
      <li onClick={() => setTabIndex(0)}>Tab 1</li>
      <li onClick={() => setTabIndex(1)}>Tab 2</li>
      <li onClick={() => setTabIndex(2)}>Tab 3</li>
    </ul>
  );
});

export default Sidebar;
  1. 创建 Tab 菜单组件:

在项目根目录下创建一个 Tabs.js 文件,并创建 Tab 菜单组件:

import React, { useContext } from 'react';
import { observer } from 'mobx-react';
import store from './store';

const Tabs = observer(() => {
  const { tabIndex } = useContext(store);

  return (
    <div>
      <TabContent index={tabIndex} />
    </div>
  );
});

export default Tabs;
  1. 创建 Tab 内容组件:

在项目根目录下创建一个 TabContent.js 文件,并创建 Tab 内容组件:

import React from 'react';

const TabContent = ({ index }) => {
  switch (index) {
    case 0:
      return <div>Tab 1 内容</div>;
    case 1:
      return <div>Tab 2 内容</div>;
    case 2:
      return <div>Tab 3 内容</div>;
    default:
      return null;
  }
};

export default TabContent;

三、实现路由管理和状态管理:

  1. 安装 React Router:
npm install react-router-dom
  1. 导入 React Router:

在项目根目录下的 index.js 文件中,导入 React Router:

import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
  1. 创建路由配置:

在项目根目录下创建一个 router.js 文件,并创建路由配置:

import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import App from './App';

const RouterConfig = () => {
  return (
    <Router>
      <Route path="/" component={App} />
    </Router>
  );
};

export default RouterConfig;
  1. 修改 index.js 文件:

在项目根目录下的 index.js 文件中,修改代码如下:

import React from 'react';
import ReactDOM from 'react-dom';
import { observable, action } from 'mobx';
import { Provider } from 'mobx-react';
import RouterConfig from './router';

ReactDOM.render(
  <Provider store={store}>
    <RouterConfig />
  </Provider>,
  document.getElementById('root')
);

结语:

本文详细介绍了如何使用 React 16.x 和 Mobx 来构建一个侧边栏联动 Tab 菜单,并通过 Mobx 管理状态,实现页面的路由管理和状态管理。通过本文的学习,读者可以了解到如何使用 Mobx 来管理复杂的状态,以及如何使用 React Router 来实现页面的路由管理。希望本文能够对读者的学习和工作有所帮助。