@@ -152,6 +152,7 @@ if (__DEV__) {
152152
153153function FiberNode (
154154 tag : TypeOfWork ,
155+ pendingProps : mixed ,
155156 key : null | string ,
156157 internalContextTag : TypeOfInternalContext ,
157158) {
@@ -169,7 +170,7 @@ function FiberNode(
169170
170171 this . ref = null ;
171172
172- this . pendingProps = null ;
173+ this . pendingProps = pendingProps ;
173174 this . memoizedProps = null ;
174175 this . updateQueue = null ;
175176 this . memoizedState = null ;
@@ -213,11 +214,12 @@ function FiberNode(
213214// compatible.
214215var createFiber = function (
215216 tag : TypeOfWork ,
217+ pendingProps : mixed ,
216218 key : null | string ,
217219 internalContextTag : TypeOfInternalContext ,
218220) : Fiber {
219221 // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors
220- return new FiberNode ( tag , key , internalContextTag ) ;
222+ return new FiberNode ( tag , pendingProps , key , internalContextTag ) ;
221223} ;
222224
223225function shouldConstruct ( Component ) {
@@ -239,6 +241,7 @@ export function createWorkInProgress(
239241 // reclaim the extra memory if needed.
240242 workInProgress = createFiber (
241243 current . tag ,
244+ pendingProps ,
242245 current . key ,
243246 current . internalContextTag ,
244247 ) ;
@@ -255,6 +258,8 @@ export function createWorkInProgress(
255258 workInProgress . alternate = current ;
256259 current . alternate = workInProgress ;
257260 } else {
261+ workInProgress . pendingProps = pendingProps ;
262+
258263 // We already have an alternate.
259264 // Reset the effect tag.
260265 workInProgress . effectTag = NoEffect ;
@@ -266,7 +271,6 @@ export function createWorkInProgress(
266271 }
267272
268273 workInProgress . expirationTime = expirationTime ;
269- workInProgress . pendingProps = pendingProps ;
270274
271275 workInProgress . child = current . child ;
272276 workInProgress . memoizedProps = current . memoizedProps ;
@@ -297,17 +301,22 @@ export function createFiberFromElement(
297301 }
298302
299303 let fiber ;
300- const { type, key} = element ;
304+ const type = element . type ;
305+ const key = element . key ;
306+ const pendingProps = element . props ;
301307 if ( typeof type === 'function' ) {
302308 fiber = shouldConstruct ( type )
303- ? createFiber ( ClassComponent , key , internalContextTag )
304- : createFiber ( IndeterminateComponent , key , internalContextTag ) ;
309+ ? createFiber ( ClassComponent , pendingProps , key , internalContextTag )
310+ : createFiber (
311+ IndeterminateComponent ,
312+ pendingProps ,
313+ key ,
314+ internalContextTag ,
315+ ) ;
305316 fiber . type = type ;
306- fiber . pendingProps = element . props ;
307317 } else if ( typeof type === 'string' ) {
308- fiber = createFiber ( HostComponent , key , internalContextTag ) ;
318+ fiber = createFiber ( HostComponent , pendingProps , key , internalContextTag ) ;
309319 fiber . type = type ;
310- fiber . pendingProps = element . props ;
311320 } else if (
312321 typeof type === 'object' &&
313322 type !== null &&
@@ -320,7 +329,7 @@ export function createFiberFromElement(
320329 // we don't know if we can reuse that fiber or if we need to clone it.
321330 // There is probably a clever way to restructure this.
322331 fiber = ( ( type : any ) : Fiber ) ;
323- fiber . pendingProps = element . props ;
332+ fiber . pendingProps = pendingProps ;
324333 } else {
325334 let info = '' ;
326335 if ( __DEV__ ) {
@@ -364,8 +373,7 @@ export function createFiberFromFragment(
364373 expirationTime : ExpirationTime ,
365374 key : null | string ,
366375) : Fiber {
367- const fiber = createFiber ( Fragment , key , internalContextTag ) ;
368- fiber . pendingProps = elements ;
376+ const fiber = createFiber ( Fragment , elements , key , internalContextTag ) ;
369377 fiber . expirationTime = expirationTime ;
370378 return fiber ;
371379}
@@ -375,14 +383,13 @@ export function createFiberFromText(
375383 internalContextTag : TypeOfInternalContext ,
376384 expirationTime : ExpirationTime ,
377385) : Fiber {
378- const fiber = createFiber ( HostText , null , internalContextTag ) ;
379- fiber . pendingProps = content ;
386+ const fiber = createFiber ( HostText , content , null , internalContextTag ) ;
380387 fiber . expirationTime = expirationTime ;
381388 return fiber ;
382389}
383390
384391export function createFiberFromHostInstanceForDeletion ( ) : Fiber {
385- const fiber = createFiber ( HostComponent , null , NoContext ) ;
392+ const fiber = createFiber ( HostComponent , null , null , NoContext ) ;
386393 fiber . type = 'DELETED' ;
387394 return fiber ;
388395}
@@ -392,9 +399,8 @@ export function createFiberFromCall(
392399 internalContextTag : TypeOfInternalContext ,
393400 expirationTime : ExpirationTime ,
394401) : Fiber {
395- const fiber = createFiber ( CallComponent , call . key , internalContextTag ) ;
402+ const fiber = createFiber ( CallComponent , call , call . key , internalContextTag ) ;
396403 fiber . type = call . handler ;
397- fiber . pendingProps = call ;
398404 fiber . expirationTime = expirationTime ;
399405 return fiber ;
400406}
@@ -404,7 +410,7 @@ export function createFiberFromReturn(
404410 internalContextTag : TypeOfInternalContext ,
405411 expirationTime : ExpirationTime ,
406412) : Fiber {
407- const fiber = createFiber ( ReturnComponent , null , internalContextTag ) ;
413+ const fiber = createFiber ( ReturnComponent , null , null , internalContextTag ) ;
408414 fiber . expirationTime = expirationTime ;
409415 return fiber ;
410416}
@@ -414,8 +420,13 @@ export function createFiberFromPortal(
414420 internalContextTag : TypeOfInternalContext ,
415421 expirationTime : ExpirationTime ,
416422) : Fiber {
417- const fiber = createFiber ( HostPortal , portal . key , internalContextTag ) ;
418- fiber . pendingProps = portal . children || [ ] ;
423+ const pendingProps = portal . children !== null ? portal . children : [ ] ;
424+ const fiber = createFiber (
425+ HostPortal ,
426+ pendingProps ,
427+ portal . key ,
428+ internalContextTag ,
429+ ) ;
419430 fiber . expirationTime = expirationTime ;
420431 fiber . stateNode = {
421432 containerInfo : portal . containerInfo ,
0 commit comments