MCPcopy Create free account
hub / github.com/QuarkGluonPlasma/react-course-code / reconcileChildren

Function reconcileChildren

mini-react/src/mini-react.js:156–205  ·  view source on GitHub ↗
(wipFiber, elements)

Source from the content-addressed store, hash-verified

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;

Callers 2

updateFunctionComponentFunction · 0.85
updateHostComponentFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected