Used hasDirtyChildren tag for the optimization

Reviewed By: emilsjolander

Differential Revision: D6134754

fbshipit-source-id: bbcfee14058140b946401de756a3f130de0f51cd
This commit is contained in:
Pritesh Nandgaonkar
2017-10-31 08:04:04 -07:00
committed by Facebook Github Bot
parent 387a3557ae
commit 587225ab45
6 changed files with 71 additions and 11 deletions

View File

@@ -82,6 +82,8 @@ public interface ReactShadowNode<T extends ReactShadowNode> {
boolean isDirty();
boolean hasDirtyDescendants();
void addChildAt(T child, int i);
T removeChildAt(int i);

View File

@@ -134,7 +134,7 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
@Override
public final boolean hasUpdates() {
return mNodeUpdated || hasNewLayout() || isDirty();
return mNodeUpdated || hasNewLayout() || isDirty() || hasDirtyDescendants();
}
@Override
@@ -174,6 +174,11 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
return mYogaNode != null && mYogaNode.isDirty();
}
@Override
public boolean hasDirtyDescendants() {
return mYogaNode != null && mYogaNode.hasDirtyDescendants();
}
@Override
public void addChildAt(ReactShadowNodeImpl child, int i) {
if (child.getParent() != null) {