当前位置:首页 > React

react如何使用mobx

2026-01-23 23:29:52React

使用 MobX 在 React 项目中

在 React 项目中集成 MobX 需要安装必要的依赖包并配置 Store 和组件。以下是详细步骤:

安装依赖

确保项目中已安装 mobxmobx-react-lite(针对函数组件)或 mobx-react(针对类组件)。使用以下命令安装:

npm install mobx mobx-react-lite
# 或
yarn add mobx mobx-react-lite

创建 MobX Store

创建一个可观察的状态管理类,使用 makeAutoObservablemakeObservable 装饰状态和方法。

react如何使用mobx

// store/counterStore.js
import { makeAutoObservable } from "mobx";

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    this.count += 1;
  }

  decrement() {
    this.count -= 1;
  }
}

export const counterStore = new CounterStore();

在组件中使用 Store

通过 observer 包装组件,使其响应状态变化。使用 React Context 或直接导入 Store 实例。

// Counter.jsx
import { observer } from "mobx-react-lite";
import { counterStore } from "./store/counterStore";

const Counter = observer(() => {
  return (
    <div>
      <h1>Count: {counterStore.count}</h1>
      <button onClick={() => counterStore.increment()}>+</button>
      <button onClick={() => counterStore.decrement()}>-</button>
    </div>
  );
});

export default Counter;

使用 Provider 注入 Store(可选)

对于多 Store 或需要依赖注入的场景,可以使用 Context 提供 Store。

react如何使用mobx

// App.jsx
import { createContext } from "react";
import { counterStore } from "./store/counterStore";
import Counter from "./Counter";

export const StoreContext = createContext();

function App() {
  return (
    <StoreContext.Provider value={{ counterStore }}>
      <Counter />
    </StoreContext.Provider>
  );
}

export default App;

组件中通过 Context 使用 Store

import { useContext } from "react";
import { observer } from "mobx-react-lite";
import { StoreContext } from "./App";

const Counter = observer(() => {
  const { counterStore } = useContext(StoreContext);
  return (
    <div>
      <h1>Count: {counterStore.count}</h1>
      <button onClick={() => counterStore.increment()}>+</button>
      <button onClick={() => counterStore.decrement()}>-</button>
    </div>
  );
});

异步操作处理

MobX 支持异步操作,通常结合 runInAction 确保状态变更在事务中完成。

import { runInAction } from "mobx";

class UserStore {
  users = [];
  loading = false;

  async fetchUsers() {
    this.loading = true;
    const response = await fetch("/api/users");
    const data = await response.json();
    runInAction(() => {
      this.users = data;
      this.loading = false;
    });
  }
}

计算属性和反应

使用 computed 定义派生状态,或 reaction 监听状态变化。

import { computed, reaction } from "mobx";

class CartStore {
  items = [];

  get totalItems() {
    return this.items.length;
  }

  constructor() {
    reaction(
      () => this.items.length,
      (length) => console.log(`Items count changed: ${length}`)
    );
  }
}

通过以上步骤,可以高效地将 MobX 集成到 React 项目中,实现响应式状态管理。

分享给朋友:

相关文章

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…

如何实操react

如何实操react

安装 React 环境 使用 create-react-app 快速搭建项目: npx create-react-app my-app cd my-app npm start 项目启动后默认在…

react run如何搭配

react run如何搭配

运行 React 项目的常见方法 使用 create-react-app 脚手架 通过官方脚手架工具快速初始化项目并运行开发服务器: npx create-react-app my-app cd…