export default { // directives: { // ref: { // bind: function (el, binding, vnode) { // binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) // }, // update: function (el, binding, vnode) { // binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) // }, // unbind: function (el, binding, vnode) { // binding.value(null) // }, // }, // }, methods: { setState(state, callback) { const newState = typeof state === 'function' ? state(this.$data, this.$props) : state; // if (this.getDerivedStateFromProps) { // Object.assign(newState, this.getDerivedStateFromProps(getOptionProps(this), { ...this.$data, ...newState }, true) || {}) // } Object.assign(this.$data, newState); this.$forceUpdate(); this.$nextTick(() => { callback && callback(); }); }, __emit() { // 直接调用listeners,底层组件不需要vueTool记录events const args = [].slice.call(arguments, 0); const filterEvent = []; const eventName = args[0]; if (args.length && this.$listeners[eventName]) { if (filterEvent.includes(eventName)) { this.$emit(eventName, ...args.slice(1)); } else { this.$listeners[eventName](...args.slice(1)); } } }, }, };