问题标签 [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 投票
1 回答
456 浏览

javascript - MST:如何正确创建主商店?

我想创建包含其他商店的 rootStore。问题是孩子包含以下属性:

id: types.identifier(types.string),

当我创建 rootStore 时,我从孩子那里得到一个错误:

[mobx-state-tree] 转换为时出错{}SomeModelStore在路径“/id”处,值undefined不可分配给类型:(identifier(string)值不是字符串),应为identifier(string)类似的实例或快照identifier(string)

我尝试使用types.late,但没有帮助。

我找到的解决方案是将所有属性包装到types.maybe

例子:

错误: https ://codesandbox.io/s/yvnznxyvyj?module=%2Fmodels%2FSomeModelStore.js

解决方法: https ://codesandbox.io/s/0mv558yq50?module=%2Fmodels%2FSomeModelStore.js

0 投票
1 回答
604 浏览

javascript - Mobx 状态树:动态创建实例

我有一个名为 Event 的模型,它有一个引用另一个模型的属性。我即时创建事件实例,而不将它们连接到根存储。问题是 mst 无法解析引用(我猜是因为它们不在同一棵树上)

动态创建具有参考的模型的正确方法是什么?我不需要为共享状态保留它们。

这是一个复制沙箱:https ://codesandbox.io/s/004n1kx5zp

0 投票
1 回答
118 浏览

mobx-state-tree - mobx-state-tree 将可选类型转换为非可选

如何将可选类型转换为非可选

types.optional(types.string)types.optional 据我所知这是有效的:

但这似乎是非常错误的。有没有更好的办法?

0 投票
1 回答
2370 浏览

react-native - Mobx store 函数调用在另一个 Observer 组件中

我有一个 Mobx 商店,我在 Provider 中传递了这个商店,当我安慰this.props时,它显示了 Mobx 商店的结构。

下面是我的 Mobx 商店

在组件内部,我正在调用 ComponentDidMount,如果我正在打印“this.props”,它会显示商店。但我不能像这样调用函数

给我错误

YellowBox.js:67 可能的未处理承诺拒绝(id:0):TypeError:OpenPropertiesStore.getOpenProperties 不是函数 TypeError:OpenPropertiesStore.getOpenProperties 不是函数

任何人都知道如何解决这个错误

0 投票
2 回答
1254 浏览

reactjs - 如何在没有组件的情况下导入 Mobx 状态树并在 Typescript 文件中引用其值?

我想在香草打字稿文档中使用 MST 中的值。它没有组件,只是在其他组件中元素的样式标签中引用的 css 值对象。这可能吗?如果是这样,我将如何去做?

编辑:这是一些代码

Mobx 状态树

带有主题 obj 的 theme.ts 文档 - 我想将 mobx 值设置为等于其中一些变量

所以本质上在这个 theme.ts 文档的顶部有许多变量在主题对象中使用。我想将 mobx 中的值设置为文档顶部的变量声明

0 投票
1 回答
2745 浏览

mobx-state-tree - 在 mobx 状态树中扩展模型

我有一堆商店,每个商店都包含一个实体类型的列表,例如

有些商店可以提供额外的功能,所以我写了

到目前为止,一切都很好,但现在我想创建一个“商店经理”,其中包含所有此类商店的列表,但失败并显示如下消息

错误:[mobx-state-tree] 转换时出错 ...
EntityStore 类型的值:(id:Order)> 不可分配给 type: EntityStore
需要一个实例EntityStore或类似 ... 的快照
(请注意,快照提供的值与目标类型兼容)

消息很清楚,我的“EntityStore with views”与“EntityStore”的类型不同。但它是它的扩展,所以我想知道是否有声明允许它。类似List<? extends EntityStore>Java的东西?

还是一个不错的解决方法,允许我在EntityStore不更改其类型的情况下添加附加功能?

0 投票
2 回答
745 浏览

mobx-state-tree - 从孩子那里获取父母数据

什么方法更好?我认为比第一种方式更好。孩子中的导入父母对我来说看起来很奇怪,但也许我错了。

根存储:

第一种方式:

第二种方式:

0 投票
3 回答
3541 浏览

javascript - 如何获得类型化反应组件属性的代码完成?

我正在使用 react 和 mobx-state-tree 并将@inject商店注入到我的组件中。所以最后我通过this.props.uiStore我的组件内部访问商店。

不幸的是,Visual Studio Code 无法推断出我的商店的类型,所以我没有任何属性的代码完成。我想知道我是否可以使用jsDoc它(因为它非常适用于方法),但找不到方法。我在想一些事情:

但它不起作用。

0 投票
1 回答
960 浏览

mobx-react - Mobx-state-tree Clone 也改变了原来的item?

我有以下模型片段:

然后我开始通过以下函数编辑节点(我保存的原始节点,因此可以在 undo() 函数中使用):

在我的渲染方法中,编辑节点的使用方式如下:

但是当我更改名称并打印节点和原始节点的内容时,它们都有更改后的名称。NodeOriginal 应包含原始名称。我究竟做错了什么?

0 投票
1 回答
502 浏览

reactjs - Mobx-state-tree 在树内使用 mobx 反应 - 好习惯还是坏习惯?

我有一篇文章是 mobx-state-tree 对象,我在反应应用程序中使用它。

这是我树内的一个动作

和事件

问题是this.updateProduct()每次更改都会运行并在每次按键后进行异步调用。

我想利用 mobx 反应并使用类似的东西

我发现延迟在这种情况下非常有用,所以我想在树中使用它们。

在 mobx-state-tree 中添加反应是一个好习惯吗?如果是,使用反应的正确位置在哪里?

我可以在反应组件内定义反应,但它们将在树之外。在树外是一个好习惯吗?