소스 검색

Fix deep morphdom key bug (#4423)

Caleb Porzio 8 달 전
부모
커밋
8f4e57b0bd
1개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      packages/morph/src/morph.js

+ 3 - 0
packages/morph/src/morph.js

@@ -147,6 +147,7 @@ export function morph(from, toHtml, options) {
                     from.appendChild(holdover)
                     from.appendChild(holdover)
 
 
                     currentFrom = holdover
                     currentFrom = holdover
+                    fromKey = getKey(currentFrom)
                 } else {
                 } else {
                     if(! shouldSkip(adding, currentTo)) {
                     if(! shouldSkip(adding, currentTo)) {
                         // Add element...
                         // Add element...
@@ -256,6 +257,7 @@ export function morph(from, toHtml, options) {
                         // No "from" key...
                         // No "from" key...
                         currentFrom.replaceWith(fromKeys[toKey])
                         currentFrom.replaceWith(fromKeys[toKey])
                         currentFrom = fromKeys[toKey]
                         currentFrom = fromKeys[toKey]
+                        fromKey = getKey(currentFrom)
                     }
                     }
                 }
                 }
 
 
@@ -267,6 +269,7 @@ export function morph(from, toHtml, options) {
                         fromKeyHoldovers[fromKey] = currentFrom
                         fromKeyHoldovers[fromKey] = currentFrom
                         currentFrom.replaceWith(fromKeyNode)
                         currentFrom.replaceWith(fromKeyNode)
                         currentFrom = fromKeyNode
                         currentFrom = fromKeyNode
+                        fromKey = getKey(currentFrom)
                     } else {
                     } else {
                         // Swap elements with keys...
                         // Swap elements with keys...
                         fromKeyHoldovers[fromKey] = currentFrom; // This ";" needs to be here...
                         fromKeyHoldovers[fromKey] = currentFrom; // This ";" needs to be here...