🎉🎉🎉一文全面了解:一个神奇的 react-antd-admin mobx 设计

比如一个项目有 登录模块,登录之后要存储用户信息,token,还有产品模块,订单模块,这种怎么使用 mobx

对于一个项目包含登录、产品、订单等多个模块的情况,你可以使用 MobX 来管理全局状态。以下是一个示例,演示如何使用 MobX 来处理这些不同模块的状态。

步骤 1: 创建 MobX Stores

首先,为每个模块创建一个 MobX store。在你的项目中,可能会有以下三个不同的 store:AuthStore(用于管理用户登录信息)、ProductStore(用于管理产品信息)、OrderStore(用于管理订单信息)。

下面是一个示例 AuthStore,其他 store 的结构类似:

javascript 复制代码
// AuthStore.js
import { makeAutoObservable } from 'mobx';

class AuthStore {
  user = null;
  token = null;

  constructor() {
    makeAutoObservable(this);
  }

  setUser(user) {
    this.user = user;
  }

  setToken(token) {
    this.token = token;
  }

  logout() {
    this.user = null;
    this.token = null;
  }
}

const authStore = new AuthStore();
export default authStore;

步骤 2: 使用 MobX Stores

在你的组件中,你可以使用这些 MobX store 来访问和修改相关的状态。例如,在登录组件中:

javascript 复制代码
import React from 'react';
import { observer } from 'mobx-react-lite';
import authStore from './AuthStore';

const Login = observer(() => {
  const login = () => {
    // 调用登录接口,成功后设置用户信息和 token
    authStore.setUser({ username: 'exampleUser' });
    authStore.setToken('exampleToken');
  };

  const logout = () => {
    authStore.logout();
  };

  return (
    <div>
      {authStore.user ? (
        <div>
          <p>Welcome, {authStore.user.username}!</p>
          <button onClick={logout}>Logout</button>
        </div>
      ) : (
        <div>
          <button onClick={login}>Login</button>
        </div>
      )}
    </div>
  );
});

export default Login;

在其他组件中,你可以类似地使用 ProductStoreOrderStore,分别管理产品和订单的状态。

步骤 3: 注入 Stores

为了在组件中使用这些 stores,你需要将它们注入到你的应用中。通常,你可以使用 Provider 组件来注入 MobX store:

javascript 复制代码
import React from 'react';
import { Provider } from 'mobx-react-lite';
import AuthStore from './AuthStore';
import ProductStore from './ProductStore';
import OrderStore from './OrderStore';
import App from './App';

const stores = {
  authStore: AuthStore,
  productStore: ProductStore,
  orderStore: OrderStore,
};

function Root() {
  return (
    <Provider {...stores}>
      <App />
    </Provider>
  );
}

export default Root;

这样,你的整个应用程序都可以访问到这些 stores。

通过这种方式,你可以将不同模块的状态分别管理在不同的 MobX store 中,然后在需要的组件中使用它们。这有助于保持代码的模块化和可维护性,同时允许不同模块之间共享状态。

相关推荐
anyup_前端梦工厂2 小时前
了解几个 HTML 标签属性,实现优化页面加载性能
前端·html
前端御书房2 小时前
前端PDF转图片技术调研实战指南:从踩坑到高可用方案的深度解析
前端·javascript
2301_789169542 小时前
angular中使用animation.css实现翻转展示卡片正反两面效果
前端·css·angular.js
风口上的猪20153 小时前
thingboard告警信息格式美化
java·服务器·前端
程序员黄同学3 小时前
请谈谈 Vue 中的响应式原理,如何实现?
前端·javascript·vue.js
爱编程的小庄4 小时前
web网络安全:SQL 注入攻击
前端·sql·web安全
宁波阿成4 小时前
vue3里组件的v-model:value与v-model的区别
前端·javascript·vue.js
柯腾啊5 小时前
VSCode 中使用 Snippets 设置常用代码块
开发语言·前端·javascript·ide·vscode·编辑器·代码片段
weixin_535854225 小时前
oppo,汤臣倍健,康冠科技,高途教育25届春招内推
c语言·前端·嵌入式硬件·硬件工程·求职招聘
扣丁梦想家5 小时前
设计模式教程:装饰器模式(Decorator Pattern)
java·前端·装饰器模式