在 React 应用中,你可以使用 MobX 的 Provider 组件来全局注入你的 store,这样你的整个应用都可以访问到这些 store。以下是如何使用 MobX 和 React Hooks 配置全局注入的示例:
首先,确保你已经安装了 MobX 和它的 React 绑定库:
npm install mobx mobx-react-lite
然后,创建一个简单的 MobX store:
// store.js
import { makeAutoObservable } from "mobx";
class CounterStore {
  count = 0;
  constructor() {
    makeAutoObservable(this);
  }
  increment() {
    this.count += 1;
  }
  decrement() {
    this.count -= 1;
  }
}
const counterStore = new CounterStore();
export default counterStore;
接下来,创建一个 RootStore 类,将所有的 store 汇总在一起:
// rootStore.js
import { makeAutoObservable } from "mobx";
import counterStore from "./store";
class RootStore {
  constructor() {
    makeAutoObservable(this);
  }
  getCounterStore = () => {
    return counterStore;
  };
}
const rootStore = new RootStore();
export default rootStore;
然后,在应用的入口文件中使用 Provider 组件来注入 RootStore:
// index.js
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "mobx-react-lite";
import App from "./App";
import rootStore from "./rootStore";
ReactDOM.render(
  <Provider rootStore={rootStore}>
    <App />
  </Provider>,
  document.getElementById("root")
);
现在,你可以在任何组件中使用 useContext 和 observer 来访问 RootStore 中的 store:
// CounterDisplay.js
import React, { useContext } from "react";
import { observer } from "mobx-react-lite";
import { useStore } from "./storeContext";
const CounterDisplay = observer(() => {
  const { rootStore } = useStore();
  const { count } = rootStore.getCounterStore();
  return <div>Count: {count}</div>;
});
export default CounterDisplay;
// CounterButtons.js
import React, { useContext } from "react";
import { observer } from "mobx-react-lite";
import { useStore } from "./storeContext";
const CounterButtons = observer(() => {
  const { rootStore } = useStore();
  const { increment, decrement } = rootStore.getCounterStore();
  return (
    <div>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  );
});
export default CounterButtons;
// storeContext.js
import React, { createContext } from "react";
import rootStore from "./rootStore";
const StoreContext = createContext(rootStore);
export const useStore = () => useContext(StoreContext);
这样,你就可以在整个应用中共享 RootStore 中的状态了。通过这种方式,你可以轻松地在组件之间共享和管理状态。
    前端工程师、程序员

                
            
        
浙公网安备 33010602011771号