如何在模型中存储非 mobx-state-tree 类型(Class 实例)?
How do you store a non mobx-state-tree type (Class instance) in models?
我得到:
Error: [mobx-state-tree] expected a mobx-state-tree type as first
argument, got class HubConnection {
constructor(urlOrConnection, options = {}) {
options = options || {};
尝试这样做时:
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-state-tree 模型只能定义基于 MST 类型的属性是有意为之的。这是因为这些类型是可快照的、可序列化的、可修补的等。虽然 HubConnection
之类的东西不能被快照、再水化等。
可以在 MST 树中存储任意的东西,但不能作为 props。相反,您可以使用 volatile state
我得到:
Error: [mobx-state-tree] expected a mobx-state-tree type as first argument, got class HubConnection { constructor(urlOrConnection, options = {}) { options = options || {};
尝试这样做时:
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-state-tree 模型只能定义基于 MST 类型的属性是有意为之的。这是因为这些类型是可快照的、可序列化的、可修补的等。虽然 HubConnection
之类的东西不能被快照、再水化等。
可以在 MST 树中存储任意的东西,但不能作为 props。相反,您可以使用 volatile state