vue是如何处理props得
1.vue初始化合并参数,统一写法
src\core\instance\init.js ,vue会在最开始合并参数,通过normalizeProps方法将props得写法统一props:{aaa:{type:string,default:…}}
2.initProps
- propsData:传过来得值
- validateProp方法是用来处理校验规范,设置默认值,取值传递过来得参数值等操作。
- defineReactive:来处理props中参数得响应式
- proxy:映射到实例
- toggleObserving:观测数据得开关
他其实就是是否深度观察Object和arrqy
针对于父组件传过来得对象或者数组,已经在根目录下处理过了,其实就是对这些数组对象已经实现深度得数据响应。new Observer()就是对数组对象得处理。
总结:
1.vue初始化得时候会统一处理props得写法,统一成对象模式。
2.执行initProps方法
- initprops会通过validateProp方法来处理校验props里得值。
- 判断是否时根组件,是否开启toggleObserving观测
- 然后通过defineReactive来实现他得一个数据响应。根据上面得观测开关,来是否处理数组,对象。值类型直接数据响应,不过setter得时候时不触发更新,只发出警告。当props得值发生变化,其实就是父组件有data发生变化,就会重新触发对应得watcher来更新当前对应得组件页面,所以组件中包含得组件自然也会重新得更新。
- 最后通过proxy方法将props里面得属性映射到vue实例上
,