UNPKG

@tarojs/taro-quickapp

Version:

Taro quickapp framework

52 lines (43 loc) 1.36 kB
import { updateComponent } from './lifecycle' import { filterProps } from './create-component' import nextTick from './next-tick' class Manager { map = {} observers = {} set (props = {}, compid, previd) { if (!compid) return if (previd) { this.observers[compid] = this.observers[previd] this.delete(previd) } const { observers } = this if (!this.map[compid]) { Object.defineProperty(this.map, compid, { configurable: true, get () { return this[`__${compid}`] }, set (props) { this[`__${compid}`] = props const component = observers[compid] && observers[compid].component const ComponentClass = observers[compid] && observers[compid].ComponentClass if (!component || !ComponentClass || !component.__isReady) return const nextProps = filterProps(ComponentClass.defaultProps, props, component.props) component.props = nextProps nextTick(() => { component._unsafeCallUpdate = true updateComponent(component) component._unsafeCallUpdate = false }) } }) } this.map[compid] = props } delete (compid) { delete this.map[compid] delete this.map[`__${compid}`] delete this.observers[compid] } } export default new Manager()