"newChild == oldChild || !newChild.mounted" assert
If a StatefulComponent marks itself dirty, gets rebuilt, then its parent gets rebuilt, its parent will find that its child is from a newer generation and hasn't changed. Previously, we considered two stateful nodes to not be syncable even if they were the same; combined with the way the "old" node looks like it's been put elsewhere (since it's already been synced), we end up confused as to why the new node is already mounted. This fixes the problem by making the canSync logic consider two identical nodes as syncable (since they are; syncChild() short-circuits that case), and by changing syncChildren to consider identical nodes as matches even if they are already synced.
Showing
Please register or sign in to comment