(wipFiber, elements)
| 154 | |
| 155 | |
| 156 | function reconcileChildren(wipFiber, elements) { |
| 157 | let index = 0 |
| 158 | let oldFiber = wipFiber.alternate?.child |
| 159 | let prevSibling = null |
| 160 | |
| 161 | while ( index < elements.length || oldFiber != null) { |
| 162 | const element = elements[index] |
| 163 | let newFiber = null |
| 164 | |
| 165 | const sameType = element?.type == oldFiber?.type |
| 166 | |
| 167 | if (sameType) { |
| 168 | newFiber = { |
| 169 | type: oldFiber.type, |
| 170 | props: element.props, |
| 171 | dom: oldFiber.dom, |
| 172 | return: wipFiber, |
| 173 | alternate: oldFiber, |
| 174 | effectTag: "UPDATE", |
| 175 | } |
| 176 | } |
| 177 | if (element && !sameType) { |
| 178 | newFiber = { |
| 179 | type: element.type, |
| 180 | props: element.props, |
| 181 | dom: null, |
| 182 | return: wipFiber, |
| 183 | alternate: null, |
| 184 | effectTag: "PLACEMENT", |
| 185 | } |
| 186 | } |
| 187 | if (oldFiber && !sameType) { |
| 188 | oldFiber.effectTag = "DELETION" |
| 189 | deletions.push(oldFiber) |
| 190 | } |
| 191 | |
| 192 | if (oldFiber) { |
| 193 | oldFiber = oldFiber.sibling |
| 194 | } |
| 195 | |
| 196 | if (index === 0) { |
| 197 | wipFiber.child = newFiber |
| 198 | } else if (element) { |
| 199 | prevSibling.sibling = newFiber |
| 200 | } |
| 201 | |
| 202 | prevSibling = newFiber |
| 203 | index++ |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | function useState(initialState) { |
| 208 | const currentFiber = wipFiber; |
no outgoing calls
no test coverage detected