]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor: more concise bitwise operations for flag removal (#7092)
author花果山大圣 <316783812@qq.com>
Fri, 11 Nov 2022 01:15:37 +0000 (09:15 +0800)
committerGitHub <noreply@github.com>
Fri, 11 Nov 2022 01:15:37 +0000 (20:15 -0500)
packages/runtime-core/src/components/KeepAlive.ts
packages/runtime-core/src/vnode.ts

index 3fec48140fc441467ce9a1637f51791c64d2bcdb..66d0f82a10ec3449c66f6c5387984367f6a58c4c 100644 (file)
@@ -424,14 +424,9 @@ function injectToKeepAliveRoot(
 }
 
 function resetShapeFlag(vnode: VNode) {
-  let shapeFlag = vnode.shapeFlag
-  if (shapeFlag & ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE) {
-    shapeFlag -= ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
-  }
-  if (shapeFlag & ShapeFlags.COMPONENT_KEPT_ALIVE) {
-    shapeFlag -= ShapeFlags.COMPONENT_KEPT_ALIVE
-  }
-  vnode.shapeFlag = shapeFlag
+  // bitwise operations to remove keep alive flags
+  vnode.shapeFlag &= ~ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
+  vnode.shapeFlag &= ~ShapeFlags.COMPONENT_KEPT_ALIVE
 }
 
 function getInnerChild(vnode: VNode) {
index 41f848e44de822d7a6a0d328d240479af42e3d64..7d873f5a1253171af526a3f2c179c2e235c5446a 100644 (file)
@@ -358,13 +358,9 @@ export function isSameVNodeType(n1: VNode, n2: VNode): boolean {
     hmrDirtyComponents.has(n2.type as ConcreteComponent)
   ) {
     // #7042, ensure the vnode being unmounted during HMR
-    if (n1.shapeFlag & ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE) {
-      n1.shapeFlag -= ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
-    }
-    // #7042, ensure the vnode being mounted as fresh during HMR
-    if (n2.shapeFlag & ShapeFlags.COMPONENT_KEPT_ALIVE) {
-      n2.shapeFlag -= ShapeFlags.COMPONENT_KEPT_ALIVE
-    }
+    // bitwise operations to remove keep alive flags
+    n1.shapeFlag &= ~ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
+    n2.shapeFlag &= ~ShapeFlags.COMPONENT_KEPT_ALIVE
     // HMR only: if the component has been hot-updated, force a reload.
     return false
   }