【问题标题】:How do you store a non mobx-state-tree type (Class instance) in models?如何在模型中存储非 mobx-state-tree 类型(类实例)?
【发布时间】:2018-06-17 06:30:05
【问题描述】:

我明白了:

错误:[mobx-state-tree] 期望 mobx-state-tree 类型作为第一个 参数,得到类 HubConnection { 构造函数(urlOrConnection,选项 = {}){ 选项 = 选项 || {};

当尝试这样做时:

import { HubConnection } from '@aspnet/signalr-client';
.model('MyStore', {
  connection: types.optional(HubConnection, new HubConnection('http://localhost:5000/myhub')),
})

我可以像以前那样在我的 React 组件的构造函数中声明它

constructor(props){
  super(props);
  this.connection = new HubConnection('http://localhost:5000/myhub');
}

但是所有附加的事件处理程序也需要在组件中定义

componentDidMount(){
  this.connection.on('Someaction', async(res: any) => {});
}

和开始/关闭连接

handleBtnClicked = () => {
  this.connection.start().then(() => self.connection.invoke('Someotheraction'));
}

理想情况下,我认为这属于模型和模型动作,因此反应组件仅触发模型上的动作,仅此而已。

有没有办法在 mobx-state-tree 模型中存储除 mobx-state-tree 类型之外的其他类型,您能否以某种方式将其包装在 mobx 类型中,或者这实际上不是 mobx 中的东西,因此是故意的。

【问题讨论】:

    标签: mobx mobx-state-tree


    【解决方案1】:

    mobx-state-tree 模型只能定义基于 MST 的类型的属性是有意的。这是因为这些类型是可快照的、可序列化的、可修补的等。而像 HubConnection 这样的东西不能被快照、再水合等。

    可以在 MST 树中任意存储东西,但不能作为道具。相反,您可以使用volatile state

    【讨论】:

    • 像魅力一样工作。喜欢 mobx-state-tree!
    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2018-10-06
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多