Как вы храните не-mobx-состояние-тип дерева (экземпляр класса) в моделях?
Я получил:
Ошибка: [mobx-state-tree] ожидал, что в качестве первого аргумента будет использован тип mobx-state-tree, получен класс 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 и, следовательно, намеренно.
1 ответ
Предполагается, что модели дерева состояний mobx могут определять только свойства типов, основанных на MST. Это связано с тем, что эти типы являются снимками, сериализуемыми, исправляемыми и т. Д. HubConnection
это не то, что можно сделать снимок, регидратировать и т. д.
Можно произвольно хранить вещи в дереве MST, но только не в качестве реквизита. Вместо этого вы можете использовать изменчивое состояние