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

我使用mobx 5.15.7看到了奇怪的行为

mobx是一个用于状态管理的JavaScript库,它可以帮助开发者更轻松地管理应用程序的状态。它提供了一种简单且可预测的方式来跟踪和更新应用程序的状态,并自动更新相关的组件。

关于你提到的"奇怪的行为",可能是指在使用mobx 5.15.7时遇到的一些问题或行为。为了更好地理解和解决这个问题,我需要更多的具体信息。以下是一些常见的可能性:

  1. 版本兼容性问题:确保你的应用程序的其他依赖项与mobx 5.15.7兼容。有时,不同版本的库之间可能存在不兼容的问题,导致奇怪的行为。
  2. 错误的使用方式:检查你是否正确地使用了mobx的API和概念。mobx有一些特定的规则和用法,例如使用@observable装饰器来标记可观察的状态,使用@computed装饰器来创建计算属性等。确保你按照官方文档中的建议使用mobx。
  3. 异步操作问题:如果你在mobx中进行了异步操作,例如使用了异步的action或使用了mobx-react提供的异步组件,那么可能需要特殊处理。mobx提供了一些解决异步操作的工具和模式,例如使用mobx-flow或mobx-react提供的异步组件。
  4. 其他可能性:如果以上解决方案都不适用,那么可能需要更详细地描述你遇到的具体问题,以便更好地帮助你解决。

总之,mobx是一个强大的状态管理库,但在使用过程中可能会遇到一些问题。通过仔细检查代码、查阅官方文档和寻求社区支持,你应该能够解决这些问题并继续享受mobx带来的好处。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云函数计算):https://cloud.tencent.com/product/scf
  • 腾讯云数据库(云数据库 TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动应用托管):https://cloud.tencent.com/product/baas
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端:从状态管理到有限状态机思考

或许不会主动去使用Vuex, Redux,但我们编写每一个组件时候就已经在管理状态,Vuex, Redux只是更方便我们进行全局状态管理。 为什么一定会使用状态管理?...就个人看法,状态机思想非常适合状态转移相对线形场景,在某些状态多循环场景转移会相对复杂些 c....可响应式状态管理器:Mobx mobx是一种响应式状态管理,他所提倡是拆分store做数据管理。这就很适合做局部状态管理,根据局部状态管理来更新全局状态。...思考如何解决这个问题时,偶然看到了有限状态机相关文章,思考到应用功能模块在某一个时刻是相互独立,我们在局部将数据进行更新,之后用一个全局函数对数据进行统一替换。...但使用第三方工具造成包体积大小增加,是否会增加性能消耗有待讨论 参考资料 可视化工具: xstate.js.org/viz/ mobx中文文档: cn.mobx.js.org/ Xstate文档: xstate.js.org

2.4K41

2023年了,还是选择 MobX

强调数据不可变性、行为无副作用 机制 封装、继承、多态等 高阶函数、闭包、柯里化、递归等 抽象能力实现 对象之间交互、引用 函数组合 OK,觉得文章都让 ChatGPT 来写好了,继续问:分别举一些面向对象和函数式擅长场景...按照「正统」面向对象思想,对象是充血,有血(数据)有肉(行为)对象。DDD 中也是鼓励使用充血模型。 在前端领域, 面向对象范式在很多场景也有很大优势: 游戏开发。...如果想要在 MobX 上实现时间旅行,建议使用 MobX-state-tree ---- 另一种时间旅行是满足业务上需求,比如实现撤销/重做,甚至多人协作。...关于 SSR 支持,由于篇幅有限,这里就不展开了 MobX in Vue 尽管 MobX 也提供了 Vue 绑定,但是总觉得奇奇怪,实际上也很少人这么用。...再复杂,可以使用与视图框架心智模型相近方案,比如 Vue + Pinia,React + Hox? 本文标题是选择 MobX 原因,并不代表推荐你无脑地使用它。

45730
  • 简洁 React 状态管理库 - Stamen

    本文作者:IMWeb forsigner 原文出处:IMWeb社区 未经同意,禁止转载 说到 React 状态管理,必提肯定是 Redux 与 MobX,2018 年快过去了,它们依然是最火热状态管理工具...,也有一些基于 Redux ,如 dva、rematch 等,也有新,如 mobx-state-tree,这里不对各个解决方案作评价。...还有各种多如牛毛 Api。 只是想早点码完页面下班,早点下班健身、陪妹子......有一天,看到了 mobx 作者 immer, 感觉使用 immer, 可以实现一个理想中状态管理工具,所以就造了一个轮子,叫 stamen, 他有什么特点呢,Show you the code...如果有什么核心特点的话,那应该是 "简洁",这里指的是使用者写代码时简洁,可以专注于业务,而不是自身源代码简洁,把问题留给使用者。

    1K30

    Hooks 邂逅 MobX ,代码变得更丝滑了!

    还有些朋友想要使用 React Hooks 来重构升级部分业务,或者封装优化一些通用业务组件,来提升项目的可扩展性,但是却困于不知如何 在 Hooks 中继续使用Mobx 这一状态管理库了,使用过程中感觉畏手畏脚奇奇怪...其实吧,Mobx 作为当下炙手可热状态管理库,很早就推出了 v6 版本,紧跟技术潮流,极大方便了我们在 Hooks 环境下,更好对 React 进行状态管理。想这也是它炙手可热原因之一吧!...Hooks很强大,为何还需要Mobx? 不可否认,Hooks很强大,而且认为,尤大大 Vue3 很大程度上也参考了 React Hooks 实现,虽然两者实现存在差异,但是思想是可以借鉴。...(仅代表个人观点,望各位大佬不想吐槽) 但是呢,在实际开发过程中,纯粹使用Hooks 的话,还是会遇到一些问题: 依赖传染性 —— 这导致了开发复杂性提高、可维护性降低 缓存雪崩 —— 这导致运行性能降低...也可以配合 Hooks 丝滑使用,好像最新版本 Mobx 更加推荐这种方式。

    1.3K10

    MobX 背后基础原理

    在开发 MobX 之前,花了好些个工夫研究开发者如何看待现有的库。...像 Meteor、Knockout、Angular、Ember 和 Vue 这样框架都显露了与 MobX 类似的反应式行为,且都已经存在很久了。那为什么要建立 MobX 呢?...更酷是,如果在事务结束之前使用了一个计算值,MobX 将会保证你得到一个更新后值! 实际上几乎没人明确使用事务,在 MobX 3 中,事务甚至被弃用了。因为 action 自动应用了事务。...对于计算值,MobX 可以感知它们是否在某处被使用。这意味着计算值可以被自动延迟并被垃圾回收。这节省了大量引用,并对性能有显著积极影响。 计算值被强制执行为无副作用。...可以轻易MobX 问题追踪器中找出一些无意间将对象转为可观察对象引起非预期行为问题。

    1.6K10

    从小学数学聊前端框架设计

    0/{x}/{y}; 再加上各种使用户可以操纵自变量事件,如给p增加onClick: setX(x + 1)}>战绩是 0/{x}/{y};...使用Hooks函数组件与Class组件最大区别是: 从拥有「生命周期实例」向「自变量、因变量与视图映射关系」转变 如果接受了这个设定,想想现在主流学习Hooks方式(甚至React官网也是如此...用两个比喻来解释。...净整些奇怪 社区早有人意识到这个问题,于是Mobx诞生了。他带来纯粹「细粒度」更新能力。 然而,这个能力是建立在React更新机制之上,就像: 一个画家,拿画笔在画板上一戳,戳到什么呢?...所以有人吐槽:用React+Mobx为啥不直接用Vue? 然而,Vue本身也依赖虚拟DOM,粒度并不是最细。 更准确说法应该是:用React+Mobx为啥不直接用SolidJS?

    51420

    ReduxMobxAkitaVuex对比 - 选择更适合低代码场景状态管理方案

    Facebook 提供了一个 Flux 实现,不过目前很少有开发者直接使用它,而是使用一些在 Flux 架构模式基础上改进方案,最广泛就是 Redux。...在此背景之下,再去理解Mobx三个核心概念: State - 状态,顾名思义就是应用程序使用状态数据,在 Mobx 中,state 是一种 Observable 对象; Actions -...Mobx action 与 Redux 和 Vuex 中 action 都不同,Redux action 是行为描述对象,并不会改变 state;Vuex 中 action 是可选,一般是用来执行异步操作...搭配使用一些社区解决方案,Mobx以上缺点可以得到一定程度上弥补。 有很多开发者认为 Redux更适合复杂大型应用,Mobx 适合数据流相对简单应用。这其实并不绝对。...Query 搭配 Entity Store 使用,有更丰富 API。

    1.9K11

    React 进阶 - React Mobx

    ,可以称之为 ObserverValue 有了观察者,那么就需要向观察者中收集 listener ,mobx 中有一个 Reaction 模块,可以对一些行为做依赖收集,在 React 中,是通过劫持...render 函数执行行为,进行依赖收集 如何监听改变,用自定义存取器属性中 get 和 set ,来进行依赖收集和更新派发,当状态改变,观察者会直接精确通知每个 listener # 状态提升...在正常情况下,在 React 应用中使用 Mobx ,本质上 mobx 里面的状态,并不是存在 React 组件里面的,是在外部由一个个 mobx 模块 model 构成,每一个 model 可以理解成一个对象...ObserverValue 对于外层 Root ,在 constructor 使用 makeObservable ,mobx 会默认给最外层 Root 添加 ObservableAdministration...# Mobx 基本使用 # mobx 常用 API 把上述每一个 class 称之为一个模块,如上述 Root 就是一个模块。mobx api 基本用于构建每一个响应式模块。

    86111

    为啥Flutter Hooks没有受到太多关注和青睐?

    奇怪为什么会是这个样子,毕竟它真的很好用!...什么是 Hooks,它又是从何而来?总不会是无名氏发明吧? 其实 Hooks 最初是源于 React,但这里并不会谈什么 React,因为没用过它,以后也应该不会用。...这里总结是:“ Hooks 是 UI 逻辑管理者 ”。 接下来我会介绍自己在应用中使用最多 Hooks,及其有状态小部件等效形式,方便你对比两者并理解前者带来实际收益。...由于 Hook 函数非常易于使用,因此不需要将其作为一个类来实现,不过这里还是展示一下具体做法。...喜欢 Hooks,并在所有项目中都使用它。通常将它与 Provider 和 MobX 结合使用。 你可以在 pub 上找到 Hooks,附带文档都很完善。

    1.1K20

    MobX学习之旅

    MobX官方推荐与React搭配使用,来存储和更新应用状态,所以最好搭配mobx-react中间件使用: 原理: 1、Reactrender是将存储状态转化为树状结构来渲染组件方法; Mobx...是用来存储和更新状态工具; 2、React使用方法是采用虚拟Dom来进行view视图缓存,来减少繁琐Dom更新 而Mobx则通过一个虚拟状态依赖图表来让react组件和应用状态同步化来减少不必要状态来更新组件...Map 4、object(有自身原型对象):这种情况需要使用observable.box(value)来管理这样值 通过box这个箱子来存这些值,并使用.get()用来获取当前值,采用.set(...,那就使用autorun,但是一般这种情况比较少 Action 比起官方说“动作”,更愿意称为是“行为”,mobxaction吸收了redux和vuex数据处理复杂逻辑 用来修改状态,不同于Computed...'; onError((error) => { consol.log(error); }) 五、MobX源码解读 六、MobX使用注意 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    1.4K20

    MobXMobX 简单入门教程

    MobX提供机制来存储和更新应用状态供 React 使用Mobx 工作流程 这里先了解下大概整理流程,接下来会结合代码,介绍每一个部分。...[2019102303.png] 本文概要 本文使用MobX 5 版本,主要将从以下几个方面介绍 MobX 使用: 配置 Webpack MobX 开发环境 MobX 常用 API 介绍(主要介绍与可观察数据相关操作...MobX 也提供使用装饰器 @observable 来将其转换成可观察,可以使用在实例字段和属性上。...autorun 作用是在可观察数据被修改之后,自动去执行依赖可观察数据行为,这个行为一直就是传入 autorun 函数。...3.1 (@)action action 是修改任何状态行为使用 action 好处是能将多次修改可观察状态合并成一次,从而减少触发 autorun 或者 reaction 次数。

    1.5K00

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

    例如: 简单使用 Context API 来做状态管理: image.png 最近 hooks 用得比较爽(参考上一篇文章: 组件思维),就想配合 Context API 做一个状态管理器,..., 只能尝试解释一下对分形理解: 前面文章也提到过‘分离逻辑和视图’和‘分离容器组件和展示组件’,这两个规则都来自于 Redux 最佳实践。...为什么从 Redux 迁移到了 Mobx Mobx 与 Redux 性能对比 总结 本节主要介绍 Redux 设计动机,以及围绕着这个动机一系列设计, 再介绍了 Redux 一些缺点和最佳实践...对于复杂领域对象,会抽取为单独类,比如前面例子中Todo类, 抽取为类好处是它具有封装性,可以包含关联行为、定义和其他对象关联关系,相比纯对象表达能力更强....相对 Redux 多余模板代码而言 数据封装性。使用类表达数据结构可以封装相应行为 问题 在多个 Store 之间共享数据比较麻烦.

    2.1K31

    MobX】390- MobX 入门教程(上)

    MobX提供机制来存储和更新应用状态供 React 使用。 ” Mobx 工作流程 这里先了解下大概整理流程,接下来会结合代码,介绍每一个部分。 ?...2019102303.png 本文概要 本文使用MobX 5 版本,主要将从以下几个方面介绍 MobX 使用: 配置 Webpack MobX 开发环境 MobX 常用 API 介绍(主要介绍与可观察数据相关操作...MobX 也提供使用装饰器 @observable 来将其转换成可观察,可以使用在实例字段和属性上。...classProperty() { return expression; } @computed get classProperty() { return expression; } 还有各种选项可以控制 computed 行为...autorun 作用是在可观察数据被修改之后,自动去执行依赖可观察数据行为,这个行为一直就是传入 autorun 函数。

    82620

    用故事解读 MobX 源码(一)autorun

    接下来将会贴 MobX 源码相关代码,稍显枯燥,只能尽量用通俗易懂的话来分析讲解。 先罗列本文故事中人物与 MobX 源码概念映射关系: ? ?...注:本文暂时先不分析 mobx.observable 源码,留待后续专门一章来分析;迫不及待读者,可以先阅读网上其他源码文章,比如:Mobx 源码解读(二) Observable 观察员有两个非常重要行为特征...”使用 autorun 时,所提供函数总是立即被触发一次“ 话了。...所以 MobX 就将任务执行笼罩在自己所营造氛围中,改变不了任务实体,改变环境总行了吧?!!...,由于涉及到探长、观察员两个维度数组,朴素算法时间复杂度将是 O(n^2),而 MobX使用 3 次遍历 + diffValue 属性辅助将复杂度降到了 O(n)。

    46120

    用故事解读 MobX 源码(一)autorun

    接下来将会贴 MobX 源码相关代码,稍显枯燥,只能尽量用通俗易懂的话来分析讲解。 先罗列本文故事中人物与 MobX 源码概念映射关系: ? ?...注:本文暂时先不分析 mobx.observable 源码,留待后续专门一章来分析;迫不及待读者,可以先阅读网上其他源码文章,比如:Mobx 源码解读(二) Observable 观察员有两个非常重要行为特征...”使用 autorun 时,所提供函数总是立即被触发一次“ 话了。...所以 MobX 就将任务执行笼罩在自己所营造氛围中,改变不了任务实体,改变环境总行了吧?!!...,由于涉及到探长、观察员两个维度数组,朴素算法时间复杂度将是 O(n^2),而 MobX使用 3 次遍历 + diffValue 属性辅助将复杂度降到了 O(n)。

    1K10

    带你走进Flutter_Mobx

    Flutter 状态管理框架很多,笔者个人使用起来比较舒适是 flutter_mobx使用了不短时间,最近抽时间了解了一下 flutter_mobx 实现。今天在这里分享一下。...如果你还不熟悉 flutter_mobx 使用,可以参考它文档:https://pub.dev/packages/flutter_mobx,也可以参考之前写一篇文章: Flutter与Mobx...我们看最经常使用 counter 计数 demo mobx 实现,我们代码里会有一个 counter 变量表示计数: 数据写入和响应 @observable int counter; @observable...在 enforceWitePolicy中,会检查是否有在计算中去观察变量行为,有的话会报错。...可以理解成是观察者 Atom 具体被观察变量 image.png flutter_mobx flutter_mobx 提供了一个 Observer 组件,在这个组件里面使用 Store 里面的被观察对象

    71810

    MobX】391- MobX 入门教程(下)

    三、MobX 常用 API 介绍 3. 修改可观察数据 在上一部分内容中,我们了解到,对可观察数据做出反应时候,需要我们手动修改可观察数据值。...多数情况下,这种高频触发是完全没有必要。 比如用户对视图一次点击操作需要很多修改 N 个状态变量,但是视图更新只需要一次就够了。 为了优化这个问题, MobX 引入了 action 。...3.1 (@)action action 是修改任何状态行为使用 action 好处是能将多次修改可观察状态合并成一次,从而减少触发 autorun 或者 reaction 次数。...2019102301.png 在这个案例中,我们引用 mobx-react 库来实现,很明显可以看出 mobx-react 是作为 mobx 和 react 之前桥梁。...@observer 在需要根据数据变换,而改变UI组件去引用,另外建议有使用到相关数据类都引用。

    89620

    用故事解读 MobX源码(五) Observable

    这其实是 MobX 构建起一套 ”镜像“ 系统,使用者仍旧按平时方式读写对象,然而每个属性读写操作实则都镜像到观察局 某个小组具体操作;非常类似于古代 ”垂帘听政“ ,看似皇帝坐在文武百官前面...将与 observable 源码 相关源码稍微整理,就是如下形式: var observable = createObservable; // 使用奇怪方式来扩展 observable 函数功能...observable方法其实是适配器 这里大致划分了一下,分成 4 部分内容来理解: 第一部分:createObservable 方法刚才粗略讲过,是 MobX API observable 别名...接下来就是去理解 ObservableValue 相比 Atom 多出来属性和方法,这里并不会全讲,太枯燥了。...为什么要添加 $mobx 属性?其具体作用又是什么? 通过阅读源码,无从获知作者添加 $mobx 属性理由,但可以知道 $mobx 作用是什么。

    83320

    用故事解读 MobX源码(三) shouldCompute

    警署最高长官浏览了报告前言部分,大致总结以下 2 点核心思想: 有两组人会涉及到任务执行:执行组(探长) 和 计算组(会计师) 言外之意,观察组(观察员)不在优化机制里,他们行为仍旧按部就班,该汇报时候就汇报...简言之,为了解决该问题执行官 MobX 给出了状态调整策略,并在这套策略之上指定任务执行规则。 由于专业性较强,行文解释里多处使用代码。...为了更生动形象地解释这套行为规范,执行官 MobX 在报告里采用 示例 + 图示 方式给出生动形象解释。 接下来我们在 B....本人窃认为这个 shouldCompute 函数名字太过于抽象,如果让命名的话,更倾向于使用 shouldExecuteTask 这个单词。...3、状态图 在软件设计中,为了更好地显示这种状态变更和事件之间关系,常常使用 状态图 来展现(没错,就是 UML建模中那个状态图) 如果不太熟悉,这里给个参考文章 UML建模之状态图(Statechart

    40110

    用故事解读 MobX 源码(二)computed

    会计师计算逻辑图 你会发现历史总是惊人相似,新增会计师执行计算任务逻辑其实 探长 执行任务逻辑是一样,下图中特意用 相同序号(不同颜色形状)标示 出,序号所对应含义如下: 设置成 正在执勤人员...会计师这种拖延到 只有被需要时候才进行计算 行为,有没有让你回忆起学生时代寒假结束前一天疯狂补作业场景? ?...“ 执行官 MobX 稍作停顿,继续道,”为了更好地阐述这套运行方案性能优化机制,明天呈上一份报告,好让您得以全面了解。“ ”Good Job!期待你报告“。...没错,探长和会计师调用就是同一个方法,所以他们在执行任务时候,行为痕迹是一样,没毛病。 ?...3、其他说明 本文为了方便说明,所以单独使用 mobx.computed 方法定义计算值,平时使用中更多则是直接应用在 对象中属性 上,使用 get 语法: var bankUser = mobx.observable

    48521
    领券