Teact: Remove unsafe optimization
This commit is contained in:
parent
e544763ab9
commit
a2eb398feb
@ -129,10 +129,11 @@ function renderWithVirtual<T extends VirtualElement | undefined>(
|
|||||||
|
|
||||||
mountChildren(parentEl, $new as VirtualElementComponent | VirtualElementFragment, { nextSibling, fragment });
|
mountChildren(parentEl, $new as VirtualElementComponent | VirtualElementFragment, { nextSibling, fragment });
|
||||||
} else {
|
} else {
|
||||||
const canSetText = $parent.children.length === 1 && $newAsReal.type === VirtualType.Text;
|
const canSetTextContent = (
|
||||||
|
!fragment && !nextSibling && $newAsReal.type === VirtualType.Text && $parent.children.length === 1
|
||||||
if (canSetText) {
|
);
|
||||||
parentEl.textContent = 'value' in $newAsReal ? $newAsReal.value : '';
|
if (canSetTextContent) {
|
||||||
|
parentEl.textContent = $newAsReal.value;
|
||||||
$newAsReal.target = parentEl.firstChild!;
|
$newAsReal.target = parentEl.firstChild!;
|
||||||
} else {
|
} else {
|
||||||
const node = createNode($newAsReal);
|
const node = createNode($newAsReal);
|
||||||
@ -160,27 +161,12 @@ function renderWithVirtual<T extends VirtualElement | undefined>(
|
|||||||
remount(parentEl, $current, undefined);
|
remount(parentEl, $current, undefined);
|
||||||
mountChildren(parentEl, $new as VirtualElementComponent | VirtualElementFragment, { nextSibling, fragment });
|
mountChildren(parentEl, $new as VirtualElementComponent | VirtualElementFragment, { nextSibling, fragment });
|
||||||
} else {
|
} else {
|
||||||
const canSetText = $parent.children.length === 1
|
const node = createNode($newAsReal);
|
||||||
&& $newAsReal.type === VirtualType.Text
|
$newAsReal.target = node;
|
||||||
&& ($current.type === VirtualType.Text || $current.type === VirtualType.Empty)
|
remount(parentEl, $current, node, nextSibling);
|
||||||
&& (!parentEl.firstChild || parentEl.firstChild === $current.target);
|
|
||||||
|
|
||||||
if (canSetText) {
|
if ($newAsReal.type === VirtualType.Tag) {
|
||||||
const value = 'value' in $newAsReal ? $newAsReal.value : '';
|
setElementRef($newAsReal, node as HTMLElement);
|
||||||
if (parentEl.firstChild) {
|
|
||||||
parentEl.firstChild.nodeValue = value;
|
|
||||||
} else {
|
|
||||||
parentEl.textContent = value;
|
|
||||||
}
|
|
||||||
$newAsReal.target = parentEl.firstChild!;
|
|
||||||
} else {
|
|
||||||
const node = createNode($newAsReal);
|
|
||||||
$newAsReal.target = node;
|
|
||||||
remount(parentEl, $current, node, nextSibling);
|
|
||||||
|
|
||||||
if ($newAsReal.type === VirtualType.Tag) {
|
|
||||||
setElementRef($newAsReal, node as HTMLElement);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user