首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在同一项目中使用Redux和MobX

虽然 Redux 和 MobX 是两种不同的状态管理库,但它们可以在同一个项目中一起使用

1. 安装依赖

首先,确保你已经安装了 Redux 和 MobX 及其相关依赖:

代码语言:javascript
复制
npm install redux react-redux @reduxjs/toolkit mobx mobx-react-lite

2. 创建 Redux Store

创建一个 Redux store 来管理应用程序的一部分状态。例如,创建一个名为 store.js 的文件:

代码语言:javascript
复制
// store.js
import { configureStore } from '@reduxjs/toolkit';
import rootReducer from './reducers';

const store = configureStore({
  reducer: rootReducer,
});

export default store;

3. 创建 MobX Store

创建一个 MobX store 来管理应用程序的另一部分状态。例如,创建一个名为 mobxStore.js 的文件:

代码语言:javascript
复制
// mobxStore.js
import { makeAutoObservable } from 'mobx';

class MobXStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    this.count++;
  }

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

const mobxStore = new MobXStore();
export default mobxStore;

4. 在组件中使用 Redux 和 MobX

在组件中,你可以根据需要使用 Redux 和 MobX。例如,在一个名为 App.js 的组件中:

代码语言:javascript
复制
// App.js
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './actions';
import { observer } from 'mobx-react-lite';
import mobxStore from './mobxStore';

const App = () => {
  const countFromRedux = useSelector((state) => state.counter.count);
  const dispatch = useDispatch();

  const handleIncrement = () => {
    dispatch(increment());
  };

  const handleDecrement = () => {
    dispatch(decrement());
  };

  return (
    <div>
      <h1>Redux Count: {countFromRedux}</h1>
      <button onClick={handleIncrement}>Increment</button>
      <button onClick={handleDecrement}>Decrement</button>

      <h1>MobX Count: {mobxStore.count}</h1>
      <button onClick={() => mobxStore.increment()}>Increment</button>
      <button onClick={() => mobxStore.decrement()}>Decrement</button>
    </齐
  );
};

export default observer(App);

5. 提供 Redux Store 和 MobX Store

在项目的入口文件(例如 index.js)中,使用 Provider 组件提供 Redux store,并使用 mobx-react-lite 提供 MobX store:

代码语言:javascript
复制
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { Provider as MobXProvider } from 'mobx-react';
import store from './store';
import App from './App';
import mobxStore from './mobxStore';

ReactDOM.render(
  <Provider store={store}>
    <MobXProvider instance={mobxStore}>
      <App />
    </MobXProvider>
  </Provider>,
  document.getElementById('root')
);
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券