首页
学习
活动
专区
工具
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')
);
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MobX or Redux?

,相应的文件代码也会不断的增加,而且对新人来说不是非常友好(理解 Redux 比较困难),听说一方诸侯 MobX 非常不错,所以在尝试使用了,目前项目中两套架构都是并存,写下自己的一些感想。...但是,同一个 componentDidMount 中可能也包含很多其它的逻辑,设置事件监听,而之后需在 componentWillUnmount 中清除。...)也不例外,而为了不将业务或数据相关的任务混入 React 组件中,就需要使用其他框架配合管理异步任务流程, redux-thunk、redux-saga、redux-promise 5、数据流向 [...,维护难易程度; 案例 Redux 项目模板 MobX 项目模板 总结 对于 Redux 更规范,更靠谱,应该使用 ReduxRedux 模版太多,太复杂了,应该选择 Mobx 这类推断,我们都应该避免...,也应该要避免这些,这些都是相对而言,每个框架库都有各自的实现,特色,及其适用场景,正如 Redux 流程更复杂,但熟悉流程后就更能把握它的一些基础/核心理念,使用起来可能更有心得及感悟;而 Mobx

53400

谈谈 React 5种最流行的状态管理库

在本文中,我将一一介绍如何在 React App 中使用 5 种最流行的库/APIS(使用最现代最新版本的库)如何在 React App程序中使用全局状态管理,并且达到一样的效果。...Mobx MobX React Lite Docs[7] 代码行数: 30 因为我在使用 Redux 之后使用MobX React, 所以它一直是我最喜欢的管理 React 状态库之一。...MobX 具有可观察者观察者的概念,然而可观察的API有所改变,那就是不必指定希望被观察的每个,而是可以使用 makeAutoObservable 来为你处理所有事情。...Redux React Redux docs[13] 代码行数:33 Redux 是整个 React 生态系统中最早,最成功的状态管理库之一。我已经在许多项目中使用Redux,如今它依然很强大。...在使用异步操作(例如数据获取)时,通常需要添加其他中间件,这会增加它的成本复杂性。 对我来说,Redux 起初很难学习。一旦我熟悉了框架,就可以很容易地使用理解它。

2.7K20
  • react 的数据管理方案:redux 还是 mobx

    本文作者:IMWeb jerytang 原文出处:IMWeb社区 未经同意,禁止转载 mobx 简介 redux 类似,mobx 是一个数据管理库,都可以 react 配合使用。...mobx 的更多介绍,移步mobxjs官网。 这里直接上实际例子。 mobx 的例子是辅导题库项目中实践方案的简化演示。 实际例子:mobx redux 对比 实现一个计数器增加、减少的功能。...如果直接使用 setState 也很容易实现这个功能。但是,这里分别用redux方案 mobx方案 实现上面的功能。 为了演示方便,将所有的代码都放在一个文件中。...,通过 props 访问使用 下面是一些不同点: mobx 使用的是 @inject 装饰器语法注入,redux 使用的是 connect 语法注入 mobx 使用 @observer 语法,让一个 component...能响应 store 字段更新 mobx 会动态精确绑定数据字段对应 component 关系, redux 使用 connect 参数手动控制传递哪些字段 mobx 直接修改 store 的状态,但是必须在

    2.1K11

    react 的数据管理方案:redux 还是 mobx

    本文作者:IMWeb jerytang 原文出处:IMWeb社区 未经同意,禁止转载 mobx 简介 redux 类似,mobx 是一个数据管理库,都可以 react 配合使用。...mobx 的更多介绍,移步mobxjs官网。 这里直接上实际例子。 mobx 的例子是辅导题库项目中实践方案的简化演示。 实际例子:mobx redux 对比 实现一个计数器增加、减少的功能。...如果直接使用 setState 也很容易实现这个功能。但是,这里分别用redux方案 mobx方案 实现上面的功能。 为了演示方便,将所有的代码都放在一个文件中。...,通过 props 访问使用 下面是一些不同点: mobx 使用的是 @inject 装饰器语法注入,redux 使用的是 connect 语法注入 mobx 使用 @observer 语法,让一个 component...能响应 store 字段更新 mobx 会动态精确绑定数据字段对应 component 关系, redux 使用 connect 参数手动控制传递哪些字段 mobx 直接修改 store 的状态,但是必须在

    1.8K70

    前端react面试题指北

    雪球效应,虽然我一个组件还是使用同一个 mixin,但是一个 mixin 会被多个组件使用,可能会存在需求使得 mixin 修改原本的函数或者新增更多的函数,这样可能就会产生一个维护成本 HOC 解决了这些问题...)也不例外,而为了不将业务或数据相关的任务混入React组件中,就需要使用其他框架配合管理异步任务流程,redux-thunk,redux-saga等; Mobx是一个透明函数响应式编程的状态管理库,...,且没有任何其他影响的数据 对比总结: redux将数据保存在单一的store中,mobx将数据保存在分散的多个store中 redux使用plain object保存数据,需要手动处理变化后的操作;mobx...适用observable保存数据,数据变化后自动处理响应的操作 redux使用不可变状态,这意味着状态是只读的,不能直接去修改它,而是应该返回一个新的状态,同时使用纯函数;mobx中的状态是可变的,可以直接对其进行修改...mobx相对来说比较简单,在其中有很多的抽象,mobx更多的使用面向对象的编程思维;redux会比较复杂,因为其中的函数式编程思想掌握起来不是那么容易,同时需要借助一系列的中间件来处理异步副作用 mobx

    2.5K30

    Zustand:让React状态管理更简单、更高效

    Zustand是一个轻量级、直观而强大的React状态管理库,它旨在提供一种比ReduxMobX等流行状态管理库更简单、更灵活的方式来管理React项目中的状态。...4、易于集成 Zustand能够与其他React库(ReduxMobX)无缝共存,这意味着你可以在不放弃现有库的情况下,逐渐过渡到Zustand。这为项目的状态管理提供了更多的灵活性选择性。...接下来,我们将通过一个简单的计数器示例以及如何在状态中存储数组,来展示如何在React项目中使用Zustand。 1. 安装Zustand 首先,你需要在项目中安装Zustand。...然而,Redux的一些特性,冗长的代码、actions、reducers中间件等概念的引入,对于新手来说可能会显得有些复杂,增加了应用程序的复杂度。...它是对于复杂状态管理解决方案Redux的一个极佳替代品,特别适合那些需要轻量级足迹的中小型应用。

    81510

    8. 精读《入坑React前没有人会告诉你的事》

    mobx 繁琐的话,对于刚刚上手的小应用不建议使用 React Router 升级太频繁?...从最早的 Backbone Model,到 Flux,再到 reflux、Redux,再到 mobx redux-observable,你不得不感叹 React 社区的活力是多么强大。...然而当你真正开始做新项目架构的时候,你到底是选 Redux 还是 Mobx,疑惑是封装解决方案 dva 呢?...但当你真正开始使用 Redux 的时候,你会发现你不仅需要学习很多新的概念, reducer、store、dispatch、action 等,还有很多基础的问题都没有标准解法,最典型的例子就是异步 action...小贴士:如何在开源社区优雅的撕逼 开源社区撕逼常有,各种嘴炮也吃充斥在社区里,甚至有人在 Github 上维护了一份开源社区撕逼历史。

    60410

    干货 | 浅谈React数据流管理

    如果说redux那种强硬的函数式编程模式让很多人难以接受,那么当他们开始mobx使用的时候,无疑是一种解脱。...三、mobx 最开始接触mobx也是因为redux作者DanAbramov的那句:Unhappywith redux?try mobx,我相信很多人也是因为这句话而开始了解学习并使用它的。...下面列举一些mobx的优势(redux进行一个对比) 1)redux不允许直接修改state,而mobx可随意修改; 2)redux修改状态必须走一套指定的流程较麻烦,而mobx可以在任何地方直接修改...(很多人在react项目中并没有完全只使用rxjs,而是用了这个redux-observable中间件,利用rxjs的操作符来处理异步action) 除了响应式编程的魅力,rxjs还有什么优势呢?...; 3)当项目复杂度一般时,小规模团队或开发周期较短、要求快速上线时,建议使用mobx; 4)当项目复杂度较高时,团队规模较大或要求对事件分发处理可监控可回溯时,建议使用redux; 5)当项目复杂度较高

    1.9K20

    2023再谈前端状态管理

    当然这样并不优雅,在实际项目中我们通常使用类似redux-thunk、redux-saga这些中间件来支持处理异步。...而MobX提供机制来存储更新应用状态供 React 使用。 对于应用开发中的常见问题,React MobX 都提供了最优独特的解决方案。...Mobx vs Redux MobxRedux的对比,实际上可以归结为 面向对象 vs 函数式 Mutable vs Immutable。...自下而上模式的崛起 我们可以看到以前的状态管理解决方案,Redux,设计理念是状态 「自上而下」流动。它「倾向于在组件树的顶端吸走所有的状态」。...因为键属性必须是唯一的,键命名是一艰巨的任务; 另一个不同是 jotai 不需要使用 Provider 包裹组件,这对开发者来说可以大幅降低开发成本心理负担。

    87210

    React知识图谱

    使用场景Antd4 Form实现Form的时候。 状态管理库 redux:函数式编程 redux是JavaScript应用的状态容器。它保证程序行为一致性且易于测试。...:基于rxjs,学习成本较高 • 状态更新日志 • redux-logger • 处理promise • redux-promise mobx:响应式编程 mobx通过透明的函数响应式编程使得状态管理变得简单可扩展...以上三者对比 redux是集中式管理state,而recoilmobx都是分散式。 recoil中状态的读写都是Hooks函数,目前没有提供类组件的使用方式。...recoil是Facebook开发的,可以使用React内部的调度机制,这是reduxmobx不支持的。 recoil目前还是实验阶段,想要应用到的自己的项目中,等待正式版发了再说吧。...在测试非浏览器环境中很有用,React Native。

    32920

    MobX 实现原理揭秘

    redux 有的地方一样,也有的地方不一样: 一样的地方是 mobx redux 都是单向数据流,通过 action 触发全局 state 更新,然后通知视图。...mobx 每次都是修改的同一个状态对象,基于响应式代理,也就是 Object.defineProperty 代理 get、set 的处理,get 时把依赖收集起来,set 修改时通知所有的依赖做更新。...这样就完成了 mobx react 的结合使用,看下效果: 我们是把时间(secondsPassed)放在 mobx 的全局 state 中管理的,在组件里使用,然后定时更新它。...,它 redux 有相同的地方也有不同的地方: 相同的地方是都是单向数据流。...性能方面 mobx 的响应式能精准的通知依赖做更新,而 redux 只能全局通知,而且 mobx 只是修改同一个对象,不是每次创建新对象,性能会比 redux 更高。

    2K11

    「前端架构」Redux vs.MobX的权威指南

    获奖者:Redux 这个类别的赢家是主观的;这取决于开发者的偏好。我个人喜欢将应用程序的整个状态存储在单个存储中的想法。这有助于我把同一个地方称为真理的唯一来源。...有些人可能会说多家商店对他们更有效,更喜欢MobX。 数据结构 Redux Redux使用普通JavaScript对象作为数据结构来存储状态。使用Redux时,必须手动跟踪更新。...Mobx MobX使用可观测数据。这有助于通过隐式订阅自动跟踪更改。在MobX中,更新是自动跟踪的,因此对开发人员来说更容易。...Redux函数使用以下模式编写。reducer是接受一个状态动作并返回一个新状态的纯函数。 function(state, action) => newState 这让Redux变得纯洁。...Redux附带了reduxdev工具,供成千上万的开发人员使用。它为调试Redux代码提供了惊人的支持。 MobX还提供开发人员工具,但它们没有Redux提供的相同质量的调试支持。

    1.6K30

    常见react面试题

    )也不例外,而为了不将业务或数据相关的任务混入React组件中,就需要使用其他框架配合管理异步任务流程,redux-thunk,redux-saga等; Mobx是一个透明函数响应式编程的状态管理库,...,且没有任何其他影响的数据 对比总结: redux将数据保存在单一的store中,mobx将数据保存在分散的多个store中 redux使用plain object保存数据,需要手动处理变化后的操作;mobx...适用observable保存数据,数据变化后自动处理响应的操作 redux使用不可变状态,这意味着状态是只读的,不能直接去修改它,而是应该返回一个新的状态,同时使用纯函数;mobx中的状态是可变的,可以直接对其进行修改...mobx相对来说比较简单,在其中有很多的抽象,mobx更多的使用面向对象的编程思维;redux会比较复杂,因为其中的函数式编程思想掌握起来不是那么容易,同时需要借助一系列的中间件来处理异步副作用 mobx...如果这还不够糟糕,考虑一些来自前端开发领域的新需求,更新调优、服务端渲染、路由跳转前请求数据等。state 的管理在大项目中相当复杂。

    3K40

    React 进阶 - React Mobx

    ,状态实质存在 model 中,model 状态通过 props 添加到组件中,可以用 mobx-react 中的 Provder inject 便捷获取它们,虽然 mobx 中响应式处理这些状态,...# Mobx 基本使用 # mobx 常用 API 把上述每一个 class 称之为一个模块,如上述 Root 就是一个模块。mobx 的 api 基本用于构建每一个响应式模块。...流程分析原理揭秘 可以从三个角度分析 mobx mobx-react 整个流程: 初始化: mobx 在初始化的时候,是如何处理 observable 可观察属性的 依赖收集:通过 mobx-react...-Reaction # 派发更新 # MobxRedux 区别 在 Mobx 在上手程度上,要优于 Redux ,比如 Redux使用异步,需要配合中间价,流程比较复杂 Redux 对于数据流向更规范化...,Mobx 中数据更加多样化,允许数据冗余 Redux 整体数据流向简单,Mobx 依赖于 Proxy, Object.defineProperty 等,劫持属性 get ,set ,数据变化多样性 Redux

    85011

    React组件设计实践总结05 - 状态管理

    使用 saga 或 redux-promise 简化了不可变数据的操作方式。 使用 immer 简化 reducer。...我为什么从 Redux 迁移到了 Mobx MobxRedux 的性能对比 总结 本节主要介绍的 Redux 设计的动机,以及围绕着这个动机一系列设计, 再介绍了 Redux 的一些缺点最佳实践...Cycle.js 状态管理模型 使用 Dva 开发复杂 SPA Redesigning Redux Redux 官方文档 redux 三重境 ---- Mobx Mobx 提供了一个类似 Vue 的响应式系统...好处是你可以按照自己的喜好组件项目,比如按照 Redux(Vuex)方式,也可以使用面向对象方式组织; 坏处是如果你没有相关经验, 会不知所措,不知道如何组织代码 Mobx 一般使用面向对象的方式对 Store...前面都详尽阐述了 Mobx Redux 的优缺点,mobx 还有 MST 加持, 相信读者心里早已有自己的喜好 扩展 你需要 Mobx 还是 Redux

    2.1K31

    基于fluxobserver相结合的思想的数据管理器

    本文作者:IMWeb 唐霜 原文出处:IMWeb社区 未经同意,禁止转载 ReduxMobX是前端领域最前沿的两个状态管理library,前者遵循Flux思想,后者独树一帜,不过可以认为继承了...总之,在讨论reduxmobx领域,你看到的“数据”其实都是指“状态”的概念,当然,有些状态是直接对数据的引用。...因此,我称mobx的思想叫observer思想。 从两种思想的使用上讲,显然mobx使用方法简单的多,但是对于使用者而言,mobx的理解成本要更大一些,使用时遇到的坑也可能更多。...datamanager的数据管理模型 flux、mobx思想比起来,由于data是静态的,因此没有被修改的概念。但是同一个地址对应的data是会被修改的,是在request请求完成之后被修改的。...datamanager的实现思想 文章标题,我们通过对fluxmobx思想的结合,实现我们想要的datamanager。

    82110

    基于fluxobserver相结合的思想的数据管理器

    ReduxMobX是前端领域最前沿的两个状态管理library,前者遵循Flux思想,后者独树一帜,不过可以认为继承了observer思想。...总之,在讨论reduxmobx领域,你看到的“数据”其实都是指“状态”的概念,当然,有些状态是直接对数据的引用。...因此,我称mobx的思想叫observer思想。 从两种思想的使用上讲,显然mobx使用方法简单的多,但是对于使用者而言,mobx的理解成本要更大一些,使用时遇到的坑也可能更多。...datamanager的数据管理模型 flux、mobx思想比起来,由于data是静态的,因此没有被修改的概念。但是同一个地址对应的data是会被修改的,是在request请求完成之后被修改的。...datamanager的实现思想 文章标题,我们通过对fluxmobx思想的结合,实现我们想要的datamanager。

    87460

    2022社招react面试题 附答案

    通过使用React Profiler,可以在使用这些方法前后对性能进行测量,从而确保通过进行给定的更改来实际改进性能。 8、讲下redux的⼯作流程?...相对来说⽐较简单,在其中有很多的抽象,mobx更多的使⽤⾯向对象的编程思维;redux会⽐较复杂,因为其中的函数式编程思想掌握起来不是那么容易,同时需要借助⼀系列的中间件来处理异步副作⽤ mobx中有更多的抽象封装...redux适合有回溯需求的应⽤:⽐⼀个画板应⽤、⼀个表格应⽤,很多时候需要撤销、重做等操作,由于redux不可变的特性,天然⽀持这些操作。...mobx适合短平快的⽬:mobx上⼿简单,样板代码少,可以很⼤程度上提⾼开发效率。...当然mobxredux也并不⼀定是⾮此即彼的关系,你也可以在⽬中⽤redux作为全局状态管理,⽤mobx作为组件局部状态管理器来⽤。 10、redux异步中间件之间的优劣?

    2.1K10
    领券