Match-id-b5f917c72588dc46381019cba0455e0369de6e5b

This commit is contained in:
* 2022-02-17 14:58:30 +08:00 committed by *
parent 832a5b51c2
commit 74c1452b07
3 changed files with 26 additions and 18 deletions

View File

@ -30,10 +30,18 @@ let ctxOldChange: Boolean = false;
let ctxOldPreviousContext: Object = {}; let ctxOldPreviousContext: Object = {};
function setContext(vNode: VNode, contextName, value) { function setContext(vNode: VNode, contextName, value) {
vNode.contexts[contextName] = value; if (vNode.contexts === null) {
vNode.contexts = {
[contextName]: value,
};
} else {
vNode.contexts[contextName] = value;
}
} }
function getContext(vNode: VNode, contextName) { function getContext(vNode: VNode, contextName) {
return vNode.contexts[contextName]; if (vNode.contexts !== null) {
return vNode.contexts[contextName];
}
} }
// capture阶段设置 // capture阶段设置

View File

@ -1,5 +1,5 @@
import type {VNode} from '../Types'; import type { VNode } from '../Types';
import type {Props} from '../../dom/DOMOperator'; import type { Props } from '../../dom/DOMOperator';
import { import {
getNamespaceCtx, getNamespaceCtx,
@ -12,10 +12,10 @@ import {
initDomProps, getPropChangeList, initDomProps, getPropChangeList,
isTextChild, isTextChild,
} from '../../dom/DOMOperator'; } from '../../dom/DOMOperator';
import {FlagUtils} from '../vnode/VNodeFlags'; import { FlagUtils } from '../vnode/VNodeFlags';
import {createVNodeChildren, markRef} from './BaseComponent'; import { createVNodeChildren, markRef } from './BaseComponent';
import {DomComponent, DomPortal, DomText} from '../vnode/VNodeTags'; import { DomComponent, DomPortal, DomText } from '../vnode/VNodeTags';
import {getFirstChild, travelVNodeTree} from '../vnode/VNodeUtils'; import { travelVNodeTree } from '../vnode/VNodeUtils';
function updateDom( function updateDom(
processing: VNode, processing: VNode,
@ -80,15 +80,15 @@ export function bubbleRender(processing: VNode) {
// 把dom类型的子节点append到parent dom中 // 把dom类型的子节点append到parent dom中
const vNode = processing.child; const vNode = processing.child;
if (vNode !== null) { if (vNode !== null) {
// 向下递归它的子节点,查找所有终端节点。 // 向下递归它的子节点,查找所有终端节点。
travelVNodeTree(vNode, node => { travelVNodeTree(vNode, node => {
if (node.tag === DomComponent || node.tag === DomText) { if (node.tag === DomComponent || node.tag === DomText) {
appendChildElement(dom, node.realNode); appendChildElement(dom, node.realNode);
} }
}, node => }, node =>
// 已经append到父节点或者是DomPortal都不需要处理child了 // 已经append到父节点或者是DomPortal都不需要处理child了
node.tag === DomComponent || node.tag === DomText || node.tag === DomPortal node.tag === DomComponent || node.tag === DomText || node.tag === DomPortal
, processing); , processing);
} }
processing.realNode = dom; processing.realNode = dom;

View File

@ -42,7 +42,7 @@ export class VNode {
task: any; task: any;
// 使用这个变量来记录修改前的值,用于恢复。 // 使用这个变量来记录修改前的值,用于恢复。
contexts = {}; contexts: any = null;
// 因为LazyComponent会修改tag和type属性为了能识别增加一个属性 // 因为LazyComponent会修改tag和type属性为了能识别增加一个属性
isLazyComponent: boolean = false; isLazyComponent: boolean = false;