Я чувствую, что получаю большую часть mobx, но я хочу что-то прояснить. У меня есть магазин с некоторыми наблюдаемыми, ядром которого является массив объектов (машинопись):Когда использовать вычисляемые/наблюдаемые в mobx
class ClientStore {
constructor() {
this.loadClients();
}
@observable private _clients: IClient[] = [];
@computed get clients() {
return this._clients;
}
@observable isFetching: boolean = false;
@observable sortField: 'title' | 'modified' = 'modified';
@observable sortDescending: boolean = true;
getClientByUrlName(urlName: string): IClient {
return this._clients.find(c => c.urlName === urlName);
}
etc...
Мой вопрос заключается в том, что последней функции - getClientByUrlName. Поскольку это обнаружение из наблюдаемого, любой компонент реагирования @observer, который использует эту функцию, повторно отображает правильно. Является ли этот идиоматический моб для чего-то подобного? Похоже, это должно быть вычисленным значением. Должен ли я сделать вычисляемое значение в компоненте, который хочет его использовать?
//import singletone ClientStore
class ClientDetailsView extends React.Component<{params:{urlName:string}}, void> {
@computed get client() {
return ClientSotre.clients.find(c => c.urlName === this.props.params.urlName);
}
...rest of react component
Я ищу лучшие практики и gotchas здесь. Любая помощь приветствуется.
* редактировать фиксированный код ошибки выборки
Ах, ха! Это было похоже на то, что мне не хватало. Каждый раз, когда я просматриваю документы, я вижу часть, как если бы она была совершенно новой. Забавно, что приклеивание вычисленного имущества в самом компоненте пришло ко мне, когда я писал вопрос. [off topic] Мне очень нравится MobX вообще (я перехожу из редукса). Чем больше я узнаю, как это работает, тем больше мне это нравится. Спасибо за всю тяжелую работу! – Jakke
Я на самом деле немного реструктурировал документы в последние дни, так что это впечатление правильно :) – mweststrate
Я немного смущен, почему было бы лучше поставить '@ computed' в ClientDetailsView, а не в хранилище. Положит ли он в магазин тот же эффект? – Jeff