Added addChildren() function as a more-optimal replacement for manageChildren for common use cases.

Reviewed By: jspahrsummers

Differential Revision: D2707930

fb-gh-sync-id: c44219bf9af943cad5b57f370656c1bcac732cd9
This commit is contained in:
Nick Lockwood
2015-12-03 10:33:03 -08:00
committed by facebook-github-bot-9
parent ecdc3429cd
commit 9a47ca1cc9
4 changed files with 95 additions and 32 deletions

View File

@@ -104,11 +104,11 @@ ReactNativeBaseComponent.Mixin = {
// no children - let's avoid calling out to the native bridge for a large
// portion of the children.
if (mountImages.length) {
var indexes = cachedIndexArray(mountImages.length);
// TODO: Pool these per platform view class. Reusing the `mountImages`
// array would likely be a jit deopt.
var createdTags = [];
for (var i = 0; i < mountImages.length; i++) {
for (var i = 0, l = mountImages.length; i < l; i++) {
var mountImage = mountImages[i];
var childTag = mountImage.tag;
var childID = mountImage.rootNodeID;
@@ -122,8 +122,15 @@ ReactNativeBaseComponent.Mixin = {
);
createdTags[i] = mountImage.tag;
}
UIManager
.manageChildren(containerTag, null, null, createdTags, indexes, null);
// Fast path for iOS
if (UIManager.addChildren) {
UIManager.addChildren(containerTag, createdTags);
return;
}
var indexes = cachedIndexArray(mountImages.length);
UIManager.manageChildren(containerTag, null, null, createdTags, indexes, null);
}
},