mobx-custom
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i mobx-custom

Weekly Downloads

2

Version

1.0.8

License

ISC

Unpacked Size

3.18 kB

Total Files

4

Last publish

Collaborators

  • zhanghongen