title: 创建惰性 observables sidebar_label: 惰性 observables {🚀}

hide_title: true

创建惰性 observables {🚀}

Usage:

  • onBecomeObserved(observable, property?, listener: () => void): (() => void)
  • onBecomeUnobserved(observable, property?, listener: () => void): (() => void)

onBecomeObservedonBecomeUnobserved方法可以给现有的可观察对象附加惰性行为或副作用。它们是MobX可观察系统的钩子并且 当可观察对象开始停止被观察时,它们会得到通知。它们都返回一个用来取消listenerdisposer函数。

在下面的示例中,我们只在实际使用被观察值时才使用它们来执行网络获取。

  1. export class City {
  2. location
  3. temperature
  4. interval
  5. constructor(location) {
  6. makeAutoObservable(this, {
  7. resume: false,
  8. suspend: false
  9. })
  10. this.location = location
  11. // 只有在实际使用温度时才开始获取数据!
  12. onBecomeObserved(this, "temperature", this.resume)
  13. onBecomeUnobserved(this, "temperature", this.suspend)
  14. }
  15. resume = () => {
  16. log(`Resuming ${this.location}`)
  17. this.interval = setInterval(() => this.fetchTemperature(), 5000)
  18. }
  19. suspend = () => {
  20. log(`Suspending ${this.location}`)
  21. this.temperature = undefined
  22. clearInterval(this.interval)
  23. }
  24. fetchTemperature = flow(function* () {
  25. // 获取数据的逻辑...
  26. })
  27. }