Просмотр исходного кода

perf(vapor): optimize v-if in once mode

Evan You 1 год назад
Родитель
Сommit
222ced2875
1 измененных файлов с 5 добавлено и 5 удалено
  1. 5 5
      packages/runtime-vapor/src/apiCreateIf.ts

+ 5 - 5
packages/runtime-vapor/src/apiCreateIf.ts

@@ -1,4 +1,4 @@
-import { type BlockFn, DynamicFragment } from './block'
+import { type Block, type BlockFn, DynamicFragment } from './block'
 import { renderEffect } from './renderEffect'
 
 export function createIf(
@@ -7,12 +7,12 @@ export function createIf(
   b2?: BlockFn,
   once?: boolean,
   // hydrationNode?: Node,
-): DynamicFragment {
-  const frag = __DEV__ ? new DynamicFragment('if') : new DynamicFragment()
+): Block {
   if (once) {
-    frag.update(condition() ? b1 : b2)
+    return condition() ? b1() : b2 ? b2() : []
   } else {
+    const frag = __DEV__ ? new DynamicFragment('if') : new DynamicFragment()
     renderEffect(() => frag.update(condition() ? b1 : b2))
+    return frag
   }
-  return frag
 }