2017-02-02 7 views
3

Есть ли способ, которым console.log будет автоматически запускаться каждый раз, когда mobx @observable изменяет значение?`console.log` mobx` @ observable` всякий раз, когда изменяется его значение

Я бы сделал это с помощью инструментов mobx dev, но он запускает огромное количество консольных журналов, поэтому сложно указать свойство, значение которого я отслеживаю.

ответ

3

Yo можно сделать:

//store.js 
import { autorun } from 'mobx'; 
autorun(() => { 
    console.log(store.value); //value is an observable. 
}); 
3

Вы можете также использовать Reaction, Для входа вы, вероятно, захотите использовать автозапуск, но вы должны знать, что есть еще один вариант, который может, дает вам больший контроль над тем, когда для запуска обратного вызова.

Мне также нравится это, потому что синтаксис имеет смысл:

import { reaction } from 'mobx' 

class SomeStore { 
    @observable item; 
    @observable otherObservable; 

    constructor() { 
     reaction(
      // The callback will run only on change 
      // of observables described in this function 
      () => this.item, 
      // You can use whatever observables/computed values in this function 
      // without making the function run on an unwanted observables change 
      () => { 
       if (this.otherObservable) { 
        doSometing(); 
       } 
      } 
     ) 
    } 
} 

Есть несколько вариантов этой функции, вы можете прочитать об этом в предоставленной ссылке.