Невозможно наблюдать массив объектов (mobx) - PullRequest
0 голосов
/ 13 июня 2018

Согласно документам: https://mobx.js.org/refguide/array.html

Я должен иметь возможность наблюдать массив.

наблюдать (listener, fireImmediately? = False) Прослушать изменения в этом массиве,Обратный вызов получит аргументы, которые выражают сращивание или изменение массива в соответствии с предложением ES7.Он возвращает функцию disposer, чтобы остановить слушателя.

Однако я получаю исключение, когда я делаю это в моем приложении:

core.js:1350 ERROR Error: Uncaught (in promise): Error: [mobx] Cannot obtain administration from Neil Clayton,Ralph Lambert,Suzie Legg
    at invariant (mobx.module.js:2652)
    at fail$1 (mobx.module.js:2647)
    at getAdministration (mobx.module.js:1967)
    at observeObservable (mobx.module.js:3606)
    at observe (mobx.module.js:3603)
    at ObjectChangeTracker.webpackJsonp.683.ObjectChangeTracker.installObserverDirectlyOn (orm-change-detection.ts:258)

Я не уверен, почему getAdministration () проваливается.У меня сложилось впечатление, что я могу передать что-либо в наблюдаемую информацию () (либо объект JS, реальный класс или его массив).

Я ошибаюсь, что могу наблюдать массив?

1 Ответ

0 голосов
/ 15 июня 2018

Оказывается, я пытался наблюдать прямой 'Array'.

Это происходило потому, что я перебирал ключи родительского объекта и получал значения, выполняя parent [propertyName].Где 'propertyName' предоставляется каким-то другим объектом (я намеренно пропускаю подробности, чтобы не усложнять мой ответ).

Это было пару дней назад, но из памяти это вызвалодоступ через геттер, который имел побочный эффект (возвратил отсортированный массив, новый объект, который не был доступен для наблюдения).

Если вместо этого я получил значение по приватному полю напрямую, а затем наблюдалфактический массив ObservableArray, мои проблемы исчезли.

Итак, я больше не убежден, что мой вопрос верен.Код здесь: https://github.com/scornflake/scheduler (но не ожидая, что кто-нибудь взглянет, на данный момент он достаточно запутан)

...