问题标签 [mobx-state-tree]

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.

0 投票
6 回答
5493 浏览

javascript - MobX 与 MobX 状态树

为什么我应该在原版 MobX 上使用 MobX 状态树?似乎每次我读到 MobX 时,都会在同一个地方提到 MST。真的有人单独使用MobX吗?

可能问题太笼统了...

0 投票
2 回答
785 浏览

javascript - 从数组中返回“假”布尔值的数量 - MobX 和 React

我有一个模拟数据文件,其内容排列如下:

我的目标是能够计算“假”值的数量,并将该计数返回给要用作内容的组件。

我有一个定义 ModelStore 的文件。开头是这样的:

您可以看到模拟数据作为数组导入。

然后我想出了以下内容:

但我不确定如何从这里开始实际计算“假”值的数量。

然后我有这个需要插入该计数值的组件:

其中 "viewed items: 2" 位于,用 "2" 代替计数值。

任何有关如何处理这种情况的指导将不胜感激。

0 投票
1 回答
301 浏览

javascript - 如何取消订阅 mobx-state-tree 中的 onSnaphot()?

我正在使用 mobx-state-tree 的onSnapshot()功能来监听状态变化,然后在本地存储中的每一次变化中保持状态。我就是这样做的:

我的问题是,当我的应用程序需要停止保留每个快照时,如何取消订阅 onSnapshot()?

0 投票
5 回答
3800 浏览

reactjs - 一个节点不能在状态树中存在两次( mobx-state-tree )

通过操作在以下模型中Error: [mobx-state-tree] A node cannot exists twice in the state tree. Failed to add SearchModel@/results/0 to path '/selectedItem'分配值时,我收到一条错误消息。我检查了文档,但不确定是什么导致了这个问题。selectedItemsetSelectedItem

感谢任何帮助。谢谢!

0 投票
1 回答
117 浏览

react-native - React-Native MobX-State-Tree 存储在 registerComponent 上不可用

鉴于以下设置:

ApplicationStore 未定义,因此无法创建...

Cannot read property 'create' of undefined

Module AppRegistry is not a registered callable module (calling runApplication)

有没有更好的方法来设置 ApplicationStore,并通过注入使其可用于组件?

这就是我在反应应用程序()中所做的事情,尽管是通过ReactDOM.render()......

一如既往,所有方向都受到赞赏,所以提前感谢!

0 投票
0 回答
448 浏览

reactjs - Mobx-state-tree、Mobx-react 和 RenderProps 的组合不更新 React 组件

这是一个复杂的问题。希望我设法解释,以便每个人都能理解错误

1) 父组件。

2)子组件 它使用react-beautiful-dnd允许在文章布局上拖放。这个库使用 RenderProps(provided: any, snapshot)

文章是一个 mobx-state-tree 模型。这是模型的 actions 属性的 init 方法:

流程如下: 1) 创建文章 2) 初始化文章 3) 我希望在我得到响应并在文章上应用快照后看到文章更新

但是运行 applySnapshot 后子组件不会重新渲染。我检查并运行了 applySnapshot,并且文章具有从后端收到的更新值。

我认为问题是因为我在子组件中使用了 RenderProps,这会以某种方式干扰并限制组件重新渲染。

棘手的一点是,如果我添加

render函数的任何地方的子组件中,这将解决问题并更新初始组件。因此,只需重新渲染道具,子组件就会重新渲染自身,并通过重新渲染 Drappable 和 RenderProps 隐式修复我的初始错误。

可能的解决方案 1:如果我使用不使用 RenderProps 的不同反应 DND 库,则所有内容都会按应有的方式更新。但我不想这样做,因为react-beautiful-dnd它有很好的动画,我需要重构一些代码。

我无法理解为什么不重新渲染 Child 组件。

子组件是否不知道它依赖于文章,因为我只使用this.props.article了 renderProps 内部?

我可以避免使用 renderProps 吗?

0 投票
3 回答
11911 浏览

typescript - Mobx-State-Tree - 分配给数组类型

我有这个基本模型。

我收到以下 TS Lint 错误:

类型 'string[]' 不可分配给类型 'IMSTArray<ISimpleType> & IStateTreeNode<IArrayType<ISimpleType>>'。类型 'string[]' 缺少来自类型 'IMSTArray<ISimpleType>' 的以下属性:spliceWithArray、observe、intercept、clear 和 4 more.ts(2322)

这是一个恼人的错误。我可以通过这样分配来修复它:(self as any).stores = stores但我想停止对我的代码进行黑客攻击。

问题是为什么我会收到这个错误?是否有另一种方法可以分配给 mobx-state-tree 中的数组类型?

我在 mobx-state-tree 中找不到更详细的使用数组的文档。有人知道吗?

0 投票
1 回答
678 浏览

javascript - 在 Mobx 状态树中进行更改后,如何让模型/状态进行监听?

我有两个模型/商店,每个都引用一个对象。Store2 在 Store1 被填充并接收到 childId 后被填充。当 Store1 被填充时,我将如何让 Store2 收听?

商店1

Store2(在 Store1 从 API 调用获取 childId 之前无法填充)

0 投票
1 回答
629 浏览

react-native - mobx-state-tree 不使用 react-native 更新模型

我尝试User使用 react-native、mobx、mobx-state-tree 创建模型

我的User模型:

以及调用该updateNickName动作的班级:

userModel.updateNickName但是用户在被调用后似乎没有更新。

为什么nick_name字段没有更新?

0 投票
2 回答
386 浏览

javascript - 多个异步调用?

我正在使用异步/等待。我想知道如何并行执行多个异步调用?

我做吗

至少从调试器看来,它一次调用一个。

我不确定是否因为我正在使用 mobx 状态树“流”功能,这是否可能会阻止call2发生直到call1完成。