MOBX Наблюдение за объектом Proxy - PullRequest
0 голосов
/ 31 января 2019

MOBX не реагирует на изменения данных, сделанные через объект Proxy.

Я использую объект Proxy для украшения объектной модели, затем сохраняю объект Proxy в моем хранилище MOBX для отображения в моемReact UI.

DataModel.js

import { extendObservable } from 'mobx'

export default function DataModel() {
   extendObservable(this, {
      prop1: 'foo',
      prop2: 'bar',
   })
}

decorateDataModel.js

export default function decorateDataModel(model) {
   return new Proxy(model, {
      get: (target, property) => {
         // do some things ...
         return model[property];
      set: (target, property, value) => {
         // do some things ...
      }
   });
}

MyStore.js

import { observable } from 'mobx';
import DataModel from './path/to/DataModel';
import decorateDataModel from './path/to/decorateDataModel';

class Store {
   @observable data = decorateDataModel(new DataModel());
}
const MyStore = new Store();
export default myStore;

И тогда у меня естьНаблюдатель Компонент React, который отслеживает «данные» и отображает их в виде таблицы.Если я не украшу его, он ведет себя так, как вы ожидаете.Если я использую консоль для изменения некоторых полей, MOBX реагирует, и новые данные отображаются.Тем не менее, когда я украшаю его прокси, он не реагирует на изменения.Использование консоли для проверки данных показывает, что они изменились, но MOBX не отреагировал на это изменение.

У кого-нибудь еще была эта проблема?Как я могу заставить MOBX реагировать на изменения в моем украшенном объекте?

1 Ответ

0 голосов
/ 02 февраля 2019
import { extendObservable } from 'mobx'

const DataModel = () =>{
   extendObservable(this, {
      prop1: 'foo',
      prop2: 'bar',
   })  //<--- Close your parenthesis?
};
...