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

Function updateDom

mini-react/src/mini-react.js:117–153  ·  view source on GitHub ↗
(dom, prevProps, nextProps)

Source from the content-addressed store, hash-verified

115 const isGone = (prev, next) => key => !(key in next)
116
117 function updateDom(dom, prevProps, nextProps) {
118 //Remove old or changed event listeners
119 Object.keys(prevProps)
120 .filter(isEvent)
121 .filter(
122 key => !(key in nextProps) || isNew(prevProps, nextProps)(key)
123 )
124 .forEach(name => {
125 const eventType = name.toLowerCase().substring(2)
126 dom.removeEventListener(eventType, prevProps[name])
127 })
128
129 // Remove old properties
130 Object.keys(prevProps)
131 .filter(isProperty)
132 .filter(isGone(prevProps, nextProps))
133 .forEach(name => {
134 dom[name] = ""
135 })
136
137 // Set new or changed properties
138 Object.keys(nextProps)
139 .filter(isProperty)
140 .filter(isNew(prevProps, nextProps))
141 .forEach(name => {
142 dom[name] = nextProps[name]
143 })
144
145 // Add event listeners
146 Object.keys(nextProps)
147 .filter(isEvent)
148 .filter(isNew(prevProps, nextProps))
149 .forEach(name => {
150 const eventType = name.toLowerCase().substring(2)
151 dom.addEventListener(eventType, nextProps[name])
152 })
153 }
154
155
156 function reconcileChildren(wipFiber, elements) {

Callers 2

createDomFunction · 0.85
commitWorkFunction · 0.85

Calls 2

isNewFunction · 0.85
isGoneFunction · 0.85

Tested by

no test coverage detected