mobx в nodejs: наблюдать массив примитивов - PullRequest
1 голос
/ 31 марта 2020

Я новичок в MOBX и работаю над документами. После прочтения о observable и autorun я создал небольшой тестовый стенд для локального воспроизведения функциональности.

При выполнении следующего кода в nodejs 13.12 с помощью mobx 5.15.4 функция автозапуска вызывается только один раз. Он не реагирует на последнюю строку, где обновляются числа.

const mobx = require('mobx')
const {observable, autorun} = mobx;

// just to make sure it is imported
console.log(observable);


var numbers = observable([1, 2, 3]);
autorun(() => {
    console.log(numbers);
});
numbers.push(4);

Кажется, это проблема, указывающая c на мою локальную среду выполнения. Сначала я сформулировал вопрос более широко, но при выполнении в браузере код работал. Это только указанный выше пример c, который не срабатывает в nodejs. Большое спасибо @ felixmo sh за указание на то, что проблема не может быть воспроизведена в браузере.

1 Ответ

2 голосов
/ 31 марта 2020

Как и декоратор / функция @observer, автозапуск будет наблюдать только те данные, которые используются во время выполнения предоставленной функции.

На самом деле, я запустил ваш код и автозапуск работает как положено.

// example 2, array of primitives
// observes computed value, works
const {
  observable,
  computed,
  autorun
} = mobx;

var numbers = observable([1, 2, 3]);
autorun(() => {
  console.log(numbers);
});
numbers.push(4); //autorun does not trigger
<script src="https://cdnjs.cloudflare.com/ajax/libs/mobx/5.15.4/mobx.umd.min.js"></script>
...