Búsqueda de sitios web

javascript - mobx en nodejs: observar arreglo de primitivos


Soy nuevo en mobx y estoy revisando la documentación. Después de leer sobre observable y autorun, creé un pequeño banco de pruebas para experimentar con la funcionalidad localmente.

Al ejecutar el siguiente código en nodejs 13.12 con mobx 5.15.4, la función autorun solo se llama una vez. No reacciona a la última línea, donde se actualiza numbers.

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);

Esto parece ser un problema específico de mi entorno local. Al principio había formulado la pregunta de manera más general, pero cuando se ejecutó en el navegador, el código funcionó. Solo el ejemplo específico anterior falla en nodejs. Muchas gracias a @felixmosh por señalar que el problema no se puede reproducir en el navegador.

Respuesta #1

Al igual que el decorador/función @observer, autorun solo observará los datos que se utilicen durante la ejecución de la función proporcionada.

De hecho, he ejecutado tu código, y la ejecución automática funciona como se esperaba.

// 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>