问题标签 [mobx-react]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - mobx + 反应意外令牌
所以我从https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.html创建了一个没有配置的应用程序
我安装了 mobx 和 mobx-react ,但在@symb 之前仍然显示意外令牌的错误。
我是否需要添加其他内容,或者我当前的配置有误?:(
包.json
.babelrc
和代码
javascript - 如何为整个 MobX 可观察数组设置新值
在 MobX 中,如何在不重新设置每个值的情况下为整个可观察数组设置新值?
第一个想法是:
但这不会触发autorun
,我只会删除我的observable array
并用新的值/数组替换它。
那么,这样做的正确方法是什么?
我对此的解决方案是使用另一个带有setter的变量,并在setter 函数内部通过index更改可观察数组索引,替换、添加和删除索引。像这样:
这是正确的方法吗?
或者有没有办法只使用相同的变量为整个数组重新赋值?
javascript - Mobx 对 Computed 属性调用 Action
这是代码:
因此,主要目标是,当配置文件数据尚未验证时,我们将从服务器重新获取它,然后,在等待数据更改时,我们将从本地存储中提供缓存值。
Anddd....我的问题是,为什么它会给我一个“计算值不能调用动作函数”的东西?
谢谢!:D
mobx - 对观察到的物体未观察到的属性的变化做出反应
我的应用商店的观察变量中有一个带有 TypeScript 类实例的外部库:
这个实例有一个方法,当被调用时,它会更新其内部状态,使对象保持原样:
现在,由于 Mobx 没有观察这个对象本身,也没有观察它的(我假设的)属性,所以只会在 active_obj 字段上直接发生变化(比如分配给它的新值)。由于 MyClass 的实例由外部库提供并最终在该库的组件中呈现,因此我无法将可观察对象和观察者添加到其类结构或 React 组件中。请注意,这只是我认为更改对象属性不会触发重新渲染的原因......
我不得不通过使用其他观察到的变量来作弊,我直接用无意义的数据进行更改,同时我调用未观察到的实例进行更改。在树的上层组件上添加对该变量的引用,我可以触发重新渲染,从而在外部库的(未观察到的)组件上产生更新。
我的问题是,如何最好地让 Mobx 意识到变化,以便它可以通知 store.active_obj 实例的观察者?
我认为 Mobx 文档的这一部分对此提出了警告,但没有解决方法或解决方案:
** 如果喜欢对象而不是字符串,并且如果它们由自己的 Like 组件呈现,则 Likes 组件不会重新呈现特定喜欢内部发生的变化。
编辑
根据@mweststrate 的问题,我提供了一些上下文:
- 我的应用程序控制它的数据,但它必须从中创建外部类的实例
- 实例的数据被封装和变异,但它是通过用户触发事件从我的应用程序端询问来完成的(意思是,我知道数据何时更新)
- 基本上,类使用应用程序的数据根据用户选择提供不同的数据视图,并使用其 React 组件呈现它
- 我还在我控制的组件中的应用程序的其他地方使用这些更改的数据
- 更改的数据是外部类内部的一部分,我不能依赖它
- 由于 Mobx 跟踪它可以看到的突变,因此使用 Observable 不能直接工作
我认为一些可能的解决方案:
- 当我调用它引用的实例进行更改时,手动通知观察者可观察的 active_object 已更改
- 有一个 Mobx 可以跟踪的容器对象,当我更改它的 sentinel 属性时,会注意到该更新并带有它的实际实例
reactjs - Mobx 组件在状态更改后重新渲染组件
我在我的 React 应用程序中引入了 Mobx。该应用程序未使用任何框架(Flux Redux 等)。
inject
在每个组件上,我首先使用包的装饰器注入状态mobx-react
:
在更新时,我直接更改组件的 onChange 方法的状态,状态包含一个对象数组(blocks
),每个块都有一些特定的属性:
然后我使用从状态中获取的值来渲染组件。
onChange
但实际上,在执行完并且状态myState
改变后,似乎没有触发渲染功能。
即使组件是状态订阅者,关于如何不触发重新渲染的任何建议?
mobx - 为什么 mobx 注入需要使用 react 的上下文?
@inject
实现不依赖于mobx-react
'Provider
组件(将其属性存储在 react 的上下文中)的装饰器的潜在问题是什么?
的用法是inject
这样的:
它只是将其参数与组件道具合并。
dependency-injection - mobx-react Provider相互依赖时如何添加store?
基于另一个商店初始化商店并将它们都放入的最佳实践是什么Provider
?我有一家名为它的商店AuthManager
,它拥有一个名为user
. 我还有另一家商店叫GoalManager
. 我需要初始化的user
属性。我想这样构造:AuthManager
GoalManager
GoalManager
但是以后不可能在 react 的上下文中添加一些东西,因为有些孩子无法根据上下文的变化进行更新!我通过将AuthManager
实例发送到GoalManager
的构造函数解决了这个问题,但我不喜欢它:
然后:
我不喜欢这个解决方案,因为我不得不依赖GoalManager
但AuthManager
它只依赖于AuthManager.user
. 然后测试GoalManager
更难(因为你必须模拟一个大对象)。
有没有更好的解决方案?
javascript - 为什么我无法通过 mobx-react 从 Provider 获取道具
我正在尝试使用 Mobx 来管理我的 react-project 的状态,但我无法通过 mobx-react 从 Provider 获取道具。
这是我的根元素(我删除了路由器以简化问题):
这是我的childNode:
但是当我登录商店时,结果是未定义的,我不知道为什么我无法获取商店。
从chrome devtools中,我发现Provider有商店但App无法获得商店,我很困惑。
我的店铺如下:
reactjs - 从自定义状态容器到 Mobx 的性能提升?
我们有一个sails-js 应用程序,它的ui 是使用React 构建的,并且状态容器是使用MVVM 方法创建的。即使用户没有做任何事情,我们的应用程序也会占用过多的内存(超过 400mb)。有时它也会崩溃(特别是在 iphone cordova build 上)。此外,即使我们没有涉及太多操作(除了加载和播放一些网络音频歌曲等),我们的 webpack 包也超过 18mb(未最小化,2.5mb 最小化)。
那么,性能滞后和捆绑包过大的原因可能是什么?我该如何解决?我认为有望解决问题的一种选择是实施 Mobx 而不是我们用于状态管理的自定义解决方案。因为它对我来说非常复杂,而且绝对没有文档。您是否有理由也可能解决我的问题?
谢谢!
javascript - 在 observabel 数组中添加的元素是不可观察的 + ReactJs
我有一个可观察的数组,它工作正常。在向该数组添加/推送元素后,我有添加按钮用于向该数组添加元素,添加的元素不可观察,但仍有其他元素是可观察的。我正在使用 mobx-react。这是代码片段:
this.model.metaValues 是一个可观察的数组。
请提出一些想法。