mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Invert logic in findAllInRenderedTreeInternal
With DOM components we won't be able to go from public instance to internal instance reliably, so do the traversal on internal instances.
This commit is contained in:
1 parent
efcf2e318e
commit
c9b0c26966
1 file changed
+29
-30
+29
-30
@@ -37,6 +37,34 @@ function Event(suffix) {}
|
||||
* @class ReactTestUtils
|
||||
*/
|
||||
|
||||
function findAllInRenderedTreeInternal(inst, test) {
|
||||
if (!inst || !inst.getPublicInstance) {
|
||||
return [];
|
||||
}
|
||||
var publicInst = inst.getPublicInstance()
|
||||
var ret = test(publicInst) ? [publicInst] : [];
|
||||
if (ReactTestUtils.isDOMComponent(publicInst)) {
|
||||
var renderedChildren = inst._renderedComponent._renderedChildren;
|
||||
var key;
|
||||
for (key in renderedChildren) {
|
||||
if (!renderedChildren.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
ret = ret.concat(
|
||||
findAllInRenderedTreeInternal(
|
||||
renderedChildren[key],
|
||||
test
|
||||
)
|
||||
);
|
||||
}
|
||||
} else if (ReactTestUtils.isCompositeComponent(publicInst)) {
|
||||
ret = ret.concat(
|
||||
findAllInRenderedTreeInternal(inst._renderedComponent, test)
|
||||
);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Todo: Support the entire DOM.scry query syntax. For now, these simple
|
||||
* utilities will suffice for testing purposes.
|
||||
@@ -131,36 +159,7 @@ var ReactTestUtils = {
|
||||
if (!inst) {
|
||||
return [];
|
||||
}
|
||||
var ret = test(inst) ? [inst] : [];
|
||||
if (ReactTestUtils.isDOMComponent(inst)) {
|
||||
var internalInstance = ReactInstanceMap.get(inst);
|
||||
var renderedChildren = internalInstance
|
||||
._renderedComponent
|
||||
._renderedChildren;
|
||||
var key;
|
||||
for (key in renderedChildren) {
|
||||
if (!renderedChildren.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (!renderedChildren[key].getPublicInstance) {
|
||||
continue;
|
||||
}
|
||||
ret = ret.concat(
|
||||
ReactTestUtils.findAllInRenderedTree(
|
||||
renderedChildren[key].getPublicInstance(),
|
||||
test
|
||||
)
|
||||
);
|
||||
}
|
||||
} else if (ReactTestUtils.isCompositeComponent(inst)) {
|
||||
ret = ret.concat(
|
||||
ReactTestUtils.findAllInRenderedTree(
|
||||
ReactTestUtils.getRenderedChildOfCompositeComponent(inst),
|
||||
test
|
||||
)
|
||||
);
|
||||
}
|
||||
return ret;
|
||||
return findAllInRenderedTreeInternal(ReactInstanceMap.get(inst), test);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user