mobx-custom
v1.0.8
Published
解决mobx extendObservable无法用于自定义类的问题
Downloads
13
Readme
mobx-custom
- mobx的observabe和extendObservable, 都不会对自定义类的实例进行处理
- 提供deepExtendObservable, 让mobx支持自定义类
mobx-custom例:
yarn add mobx mobx-custom
import {deepExtendObservable} from "mobx-custom"
import {observe} from "mobx"
class Address = {
city = "上海"
cityCode = -1
desc = "xx路"
}
class Person {
age = 10
address = new Address()
}
const oriPerson = new Person()
const person = deepExtendObservable(oriPerson, {...oriPerson})
observe(person, () => {
console.log('person属性有变动')
})
person.address = new Address() // 触发observe
person.address.city = "北京" // 触发observe
person.age = 200 // 触发observe
mobx例:
import {deepExtendObservable} from "mobx-custom"
import {observe, observable, extendObservable} from "mobx"
class Address = {
city = "上海"
cityCode = -1
desc = "xx路"
}
class Person {
age = 10
address = new Address()
}
// mobx会将普通对象进行observable
const obj = observable({a: 1})
observe(obj, () => {
console.log('obj属性有变动')
})
person.a = 2 // 触发observe
// mobx不会对person1做处理
const person1 = observable(new Person())
observe(person1, () => {
console.log('person1属性有变动')
})
person.age = 2 // 不会触发observe
// mobx不会对person2.address做处理
let oriPerson2 = new Person()
const person2 = extendObservable(oriPerson2, {...oriPerson2})
observe(person2, () => {
console.log('person2属性有变动')
})
person.age = 2 // 会触发observe
person.address = new Address() // 不会触发observe