问题标签 [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.
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
javascript - Mobx 状态树:动态创建实例
我有一个名为 Event 的模型,它有一个引用另一个模型的属性。我即时创建事件实例,而不将它们连接到根存储。问题是 mst 无法解析引用(我猜是因为它们不在同一棵树上)
动态创建具有参考的模型的正确方法是什么?我不需要为共享状态保留它们。
这是一个复制沙箱:https ://codesandbox.io/s/004n1kx5zp
mobx-state-tree - mobx-state-tree 将可选类型转换为非可选
如何将可选类型转换为非可选
从types.optional(types.string)
到types.optional
据我所知这是有效的:
但这似乎是非常错误的。有没有更好的办法?
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 不是函数
任何人都知道如何解决这个错误
reactjs - 如何在没有组件的情况下导入 Mobx 状态树并在 Typescript 文件中引用其值?
我想在香草打字稿文档中使用 MST 中的值。它没有组件,只是在其他组件中元素的样式标签中引用的 css 值对象。这可能吗?如果是这样,我将如何去做?
编辑:这是一些代码
Mobx 状态树
带有主题 obj 的 theme.ts 文档 - 我想将 mobx 值设置为等于其中一些变量
所以本质上在这个 theme.ts 文档的顶部有许多变量在主题对象中使用。我想将 mobx 中的值设置为文档顶部的变量声明
mobx-state-tree - 在 mobx 状态树中扩展模型
我有一堆商店,每个商店都包含一个实体类型的列表,例如
有些商店可以提供额外的功能,所以我写了
到目前为止,一切都很好,但现在我想创建一个“商店经理”,其中包含所有此类商店的列表,但失败并显示如下消息
错误:[mobx-state-tree] 转换时出错 ...
EntityStore 类型的值:(id:Order)> 不可分配给 type:EntityStore
,
需要一个实例EntityStore
或类似 ... 的快照
(请注意,快照提供的值与目标类型兼容)
消息很清楚,我的“EntityStore with views”与“EntityStore”的类型不同。但它是它的扩展,所以我想知道是否有声明允许它。类似List<? extends EntityStore>
Java的东西?
还是一个不错的解决方法,允许我在EntityStore
不更改其类型的情况下添加附加功能?
mobx-state-tree - 从孩子那里获取父母数据
什么方法更好?我认为比第一种方式更好。孩子中的导入父母对我来说看起来很奇怪,但也许我错了。
根存储:
第一种方式:
第二种方式:
javascript - 如何获得类型化反应组件属性的代码完成?
我正在使用 react 和 mobx-state-tree 并将@inject
商店注入到我的组件中。所以最后我通过this.props.uiStore
我的组件内部访问商店。
不幸的是,Visual Studio Code 无法推断出我的商店的类型,所以我没有任何属性的代码完成。我想知道我是否可以使用jsDoc
它(因为它非常适用于方法),但找不到方法。我在想一些事情:
但它不起作用。
mobx-react - Mobx-state-tree Clone 也改变了原来的item?
我有以下模型片段:
然后我开始通过以下函数编辑节点(我保存的原始节点,因此可以在 undo() 函数中使用):
在我的渲染方法中,编辑节点的使用方式如下:
但是当我更改名称并打印节点和原始节点的内容时,它们都有更改后的名称。NodeOriginal 应包含原始名称。我究竟做错了什么?
reactjs - Mobx-state-tree 在树内使用 mobx 反应 - 好习惯还是坏习惯?
我有一篇文章是 mobx-state-tree 对象,我在反应应用程序中使用它。
这是我树内的一个动作
和事件
问题是this.updateProduct()
每次更改都会运行并在每次按键后进行异步调用。
我想利用 mobx 反应并使用类似的东西
我发现延迟在这种情况下非常有用,所以我想在树中使用它们。
在 mobx-state-tree 中添加反应是一个好习惯吗?如果是,使用反应的正确位置在哪里?
我可以在反应组件内定义反应,但它们将在树之外。在树外是一个好习惯吗?