浏览代码

move everything to lifecycle

Alexandre Lepretre 1 年之前
父节点
当前提交
c68aba0000
共有 2 个文件被更改,包括 8 次插入11 次删除
  1. 8 6
      packages/alpinejs/src/lifecycle.js
  2. 0 5
      packages/alpinejs/src/mutation.js

+ 8 - 6
packages/alpinejs/src/lifecycle.js

@@ -82,16 +82,17 @@ export function interceptInit(callback) { initInterceptors.push(callback) }
 export function initTree(el, walker = walk, intercept = () => {}) {
     deferHandlingDirectives(() => {
         walker(el, (el, skip) => {
-            intercept(el, skip)
+            if (!el._x_isInit) {
+                intercept(el, skip)
 
-            initInterceptors.forEach(i => i(el, skip))
-
-            directives(el, el.attributes).forEach(handle => handle())
+                initInterceptors.forEach(i => i(el, skip))
+                directives(el, el.attributes).forEach(handle => handle())
+            }
 
             if (el._x_ignore) {
-              skip()
+                skip()
             } else {
-              el._x_isInit = true
+                el._x_isInit = true
             }
         })
     })
@@ -101,5 +102,6 @@ export function destroyTree(root) {
     walk(root, el => {
         cleanupAttributes(el)
         cleanupElement(el)
+        delete el._x_isInit
     })
 }

+ 0 - 5
packages/alpinejs/src/mutation.js

@@ -194,15 +194,10 @@ function onMutate(mutations) {
         node._x_ignore = true
     })
     for (let node of addedNodes) {
-        // If the node is already init, it means it's a move operation
-        if (node._x_isInit) continue
-
         // If the node was eventually removed as part of one of his
         // parent mutations, skip it
         if (! node.isConnected) continue
 
-        node._x_isInit = true
-
         delete node._x_ignoreSelf
         delete node._x_ignore
         onElAddeds.forEach(i => i(node))