title: 创建惰性 observables sidebar_label: 惰性 observables {🚀}
hide_title: true
创建惰性 observables {🚀}
Usage:
onBecomeObserved(observable, property?, listener: () => void): (() => void)onBecomeUnobserved(observable, property?, listener: () => void): (() => void)
onBecomeObserved和onBecomeUnobserved方法可以给现有的可观察对象附加惰性行为或副作用。它们是MobX可观察系统的钩子并且
当可观察对象开始和停止被观察时,它们会得到通知。它们都返回一个用来取消listener的disposer函数。
在下面的示例中,我们只在实际使用被观察值时才使用它们来执行网络获取。
export class City {locationtemperatureintervalconstructor(location) {makeAutoObservable(this, {resume: false,suspend: false})this.location = location// 只有在实际使用温度时才开始获取数据!onBecomeObserved(this, "temperature", this.resume)onBecomeUnobserved(this, "temperature", this.suspend)}resume = () => {log(`Resuming ${this.location}`)this.interval = setInterval(() => this.fetchTemperature(), 5000)}suspend = () => {log(`Suspending ${this.location}`)this.temperature = undefinedclearInterval(this.interval)}fetchTemperature = flow(function* () {// 获取数据的逻辑...})}
