A little front-end knowledge every day 02——Vue response principle

1. Responsiveness of Vue2

Implementation principle: get and set methods in Object.defineProperty()

Object.defineProperty(data, 'obj', {
    
    
    get () {
    
    }, 
    set () {
    
    }
})

Disadvantages: Adding and deleting object properties, modifying array pages through subscripts does not update

Solution:

对象:this.$set(this.obj,'name','beizhen')
	 this.$delete(this.obj,'name')		
	 
数组:this.$set(this.list,0,'beizhen')

Two, Vue3 response principle

Implementation principle: Proxy (proxy) object intercepts attribute changes, Reflect (reflection) operates attributes

new Proxy(data, {
    
    
	// 拦截读取属性
    get (target, prop) {
    
    
    	return Reflect.get(target, prop)
    },
    // 拦截设置属性
    set (target, prop, value) {
    
    
    	return Reflect.set(target, prop, value)
    },
    // 拦截删除属性
    deleteProperty (target, prop) {
    
    
    	return Reflect.deleteProperty(target, prop)
    }
})

Why use Reflect instead of Object manipulation properties?

Reflect更友好,会有返回值;Object异常需要try/catch捕获

Guess you like

Origin blog.csdn.net/qq_33591873/article/details/127913339