mirror of
https://github.com/bendtherules/react-fiber-traverse.git
synced 2026-08-18 13:52:36 +00:00
Add basic traverseGenerator
Need to allow changing order
This commit is contained in:
+2
-1
@@ -1,4 +1,4 @@
|
||||
import traverse from "./traverse";
|
||||
import { traverse, traverseGenerator } from "./traverse";
|
||||
import {
|
||||
findNodeByComponent,
|
||||
findNodeByComponentRef,
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
|
||||
export {
|
||||
traverse,
|
||||
traverseGenerator,
|
||||
findNodeByComponent,
|
||||
findNodeByComponentRef,
|
||||
findNodeByComponentName
|
||||
|
||||
+22
-3
@@ -1,5 +1,5 @@
|
||||
// import { isNodeSimple } from './utils';
|
||||
import {FiberNode} from './mocked-types';
|
||||
import { FiberNode } from "./mocked-types";
|
||||
|
||||
function traverse(node: FiberNode, fn: (node: FiberNode) => any) {
|
||||
fn.call(null, node);
|
||||
@@ -10,6 +10,25 @@ function traverse(node: FiberNode, fn: (node: FiberNode) => any) {
|
||||
if (node.sibling !== null) {
|
||||
traverse(node.sibling, fn);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default traverse;
|
||||
function* traverseGenerator(
|
||||
node: FiberNode
|
||||
// {
|
||||
// order = "pre"
|
||||
// }: { order: "in" | "pre" | "post" }
|
||||
): IterableIterator<FiberNode> {
|
||||
const { skipChild, skipSibling } = yield node;
|
||||
|
||||
if (!skipChild && node.child !== null) {
|
||||
const nextNode = node.child;
|
||||
yield* traverseGenerator(nextNode);
|
||||
}
|
||||
|
||||
if (!skipSibling && node.sibling !== null) {
|
||||
const nextNode = node.sibling;
|
||||
yield* traverseGenerator(nextNode);
|
||||
}
|
||||
}
|
||||
|
||||
export { traverse, traverseGenerator };
|
||||
|
||||
Reference in New Issue
Block a user