Match-id-9ccbe249bd64aa265df986ea76dfa1446be57717
This commit is contained in:
parent
24d53da4d6
commit
bd7c640db6
|
@ -137,6 +137,7 @@ export class VNode {
|
||||||
this.realNode = null;
|
this.realNode = null;
|
||||||
this.stateCallbacks = null;
|
this.stateCallbacks = null;
|
||||||
this.isLazyComponent = true;
|
this.isLazyComponent = true;
|
||||||
|
this.lazyType = null;
|
||||||
break;
|
break;
|
||||||
case Fragment:
|
case Fragment:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -84,28 +84,6 @@ export function updateVNode(vNode: VNode, vNodeProps?: any): VNode {
|
||||||
return vNode;
|
return vNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVNodeTag(type: any) {
|
|
||||||
let vNodeTag = ClsOrFunComponent;
|
|
||||||
let isLazy = false;
|
|
||||||
const componentType = typeof type;
|
|
||||||
|
|
||||||
if (componentType === 'function') {
|
|
||||||
if (isClassComponent(type)) {
|
|
||||||
vNodeTag = ClassComponent;
|
|
||||||
}
|
|
||||||
} else if (componentType === 'string') {
|
|
||||||
vNodeTag = DomComponent;
|
|
||||||
} else if (type === TYPE_SUSPENSE) {
|
|
||||||
vNodeTag = SuspenseComponent;
|
|
||||||
} else if (componentType === 'object' && type !== null && typeMap[type.vtype]) {
|
|
||||||
vNodeTag = typeMap[type.vtype];
|
|
||||||
isLazy = type.vtype === TYPE_LAZY;
|
|
||||||
} else {
|
|
||||||
throw Error(`Component type is invalid, got: ${type == null ? type : componentType}`);
|
|
||||||
}
|
|
||||||
return { vNodeTag, isLazy };
|
|
||||||
}
|
|
||||||
|
|
||||||
export function createFragmentVNode(fragmentKey, fragmentProps) {
|
export function createFragmentVNode(fragmentKey, fragmentProps) {
|
||||||
const vNode = newVirtualNode(Fragment, fragmentKey, fragmentProps);
|
const vNode = newVirtualNode(Fragment, fragmentKey, fragmentProps);
|
||||||
vNode.shouldUpdate = true;
|
vNode.shouldUpdate = true;
|
||||||
|
@ -127,7 +105,24 @@ export function createPortalVNode(portal) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createUndeterminedVNode(type, key, props) {
|
export function createUndeterminedVNode(type, key, props) {
|
||||||
const { vNodeTag, isLazy } = getVNodeTag(type);
|
let vNodeTag = ClsOrFunComponent;
|
||||||
|
let isLazy = false;
|
||||||
|
const componentType = typeof type;
|
||||||
|
|
||||||
|
if (componentType === 'function') {
|
||||||
|
if (isClassComponent(type)) {
|
||||||
|
vNodeTag = ClassComponent;
|
||||||
|
}
|
||||||
|
} else if (componentType === 'string') {
|
||||||
|
vNodeTag = DomComponent;
|
||||||
|
} else if (type === TYPE_SUSPENSE) {
|
||||||
|
vNodeTag = SuspenseComponent;
|
||||||
|
} else if (componentType === 'object' && type !== null && typeMap[type.vtype]) {
|
||||||
|
vNodeTag = typeMap[type.vtype];
|
||||||
|
isLazy = type.vtype === TYPE_LAZY;
|
||||||
|
} else {
|
||||||
|
throw Error(`Component type is invalid, got: ${type == null ? type : componentType}`);
|
||||||
|
}
|
||||||
|
|
||||||
const vNode = newVirtualNode(vNodeTag, key, props);
|
const vNode = newVirtualNode(vNodeTag, key, props);
|
||||||
vNode.type = type;
|
vNode.type = type;
|
||||||
|
|
Loading…
Reference in New Issue