MCPcopy Index your code
hub / github.com/ygs-code/vue / createFunctionalComponent

Function createFunctionalComponent

vue.js:5822–5921  ·  view source on GitHub ↗
(
        Ctor, //组件构造函数VueComponent
        propsData, //组件props数据
        data,  //  组件属性 数据
        contextVm, //vm  vue实例化对象
        children //组件子节点
    )

Source from the content-addressed store, hash-verified

5820
5821 //创建功能组件 通过检测 props 属性 然后合并props 之后创建 vond 虚拟dom
5822 function createFunctionalComponent(
5823 Ctor, //组件构造函数VueComponent
5824 propsData, //组件props数据
5825 data, // 组件属性 数据
5826 contextVm, //vm vue实例化对象
5827 children //组件子节点
5828 ) {
5829 console.log('==Ctor==')
5830 console.log(Ctor)
5831 console.log('==propsData==')
5832 console.log(propsData)
5833 console.log('==data==')
5834 console.log(data)
5835 console.log('==contextVm==')
5836 console.log(contextVm)
5837 console.log('==children==')
5838 console.log(children)
5839
5840
5841
5842 var options = Ctor.options; //获取拓展参数
5843 var props = {};
5844 var propOptions = options.props; //获取props 参数 就是组建 定义的props 类型数据
5845 console.log('==options.props==')
5846 console.log(options.props)
5847
5848 if (isDef(propOptions)) { //如果定义了props 参数
5849 for (var key in propOptions) { //循环 propOptions 参数
5850
5851 /*
5852 验证支柱 验证 prosp 是否是规范数据 并且为props 添加 value.__ob__ 属性,把prosp添加到观察者中
5853 * 校验 props 参数 就是组建 定义的props 类型数据,校验类型
5854 *
5855 * 判断prop.type的类型是不是Boolean或者String,如果不是他们两类型,调用getPropDefaultValue获取默认值并且把value添加到观察者模式中
5856 */
5857 props[key] = validateProp(
5858 key, //key
5859 propOptions, //原始props 参数
5860 propsData || emptyObject // 转义过的组件props数据
5861 );
5862 }
5863 } else {
5864 if (isDef(data.attrs)) { //如果定义有属性
5865 // 前拷贝合并 props属性 并且把 from 的key 由 - 写法变成 驼峰的写法。
5866 mergeProps(props, data.attrs); //合并props 和 属性
5867 }
5868 if (isDef(data.props)) { //如果data定义有props 合并props
5869 mergeProps(props, data.props);
5870 }
5871 }
5872 // Ctor,
5873 // propsData, //组件props数据
5874 // data, // vonde 虚拟dom的数据
5875 // contextVm, //上下文this Vm
5876 // children //子节点
5877 console.log(Ctor)
5878 // Ctor = function VueComponent(options) {
5879 // this._init(options);

Callers 1

createComponentFunction · 0.85

Calls 5

isDefFunction · 0.85
validatePropFunction · 0.85
mergePropsFunction · 0.85
normalizeChildrenFunction · 0.85

Tested by

no test coverage detected