mirror of
https://github.com/bendtherules/react-fiber-traverse.git
synced 2026-08-18 13:52:36 +00:00
Release v0.0.8
This commit is contained in:
@@ -6,6 +6,10 @@
|
||||
|
||||
## Index
|
||||
|
||||
### Interfaces
|
||||
|
||||
* [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)
|
||||
|
||||
### Functions
|
||||
|
||||
* [traverse](_traverse_.md#traverse)
|
||||
@@ -15,13 +19,13 @@
|
||||
|
||||
### traverse
|
||||
|
||||
▸ **traverse**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `fn`: function): *void*
|
||||
▸ **traverse**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `fn`: function, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *void*
|
||||
|
||||
*Defined in [traverse.ts:19](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/traverse.ts#L19)*
|
||||
*Defined in [traverse.ts:146](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L146)*
|
||||
|
||||
Traverse nodes recursively in depth-first manner, starting from a start node.
|
||||
|
||||
This is the default and basic traversal method, which covers basic use cases.
|
||||
This is the default and basic traversal function, which covers basic use cases.
|
||||
You can't do advanced things like change the order of traversal, skip or cancel traversal after any node, etc.
|
||||
For more advanced usecases, see [traverseGenerator](_traverse_.md#traversegenerator)
|
||||
|
||||
@@ -45,6 +49,8 @@ Name | Type |
|
||||
------ | ------ |
|
||||
`node` | [FiberNode](_mocked_types_index_.md#fibernode) |
|
||||
|
||||
▪`Optional` **traverseConfig**: *[TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)*
|
||||
|
||||
**Returns:** *void*
|
||||
|
||||
___
|
||||
@@ -53,7 +59,64 @@ ___
|
||||
|
||||
▸ **traverseGenerator**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `__namedParameters`: object): *`IterableIterator<FiberNode>`*
|
||||
|
||||
*Defined in [traverse.ts:30](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/traverse.ts#L30)*
|
||||
*Defined in [traverse.ts:69](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L69)*
|
||||
|
||||
Traverse nodes recursively using generators.
|
||||
|
||||
This is the advanced traverse function, which can be used used
|
||||
to write other variants of traversal and find.
|
||||
|
||||
Type signature for generator.next first argument is `{ skipChild?: boolean; skipSibling?: boolean } | void `
|
||||
Throw any error into the generator to finish the generator and let it cleanup its internals.
|
||||
|
||||
It allows inversion of control -
|
||||
so, application code can decide to
|
||||
1. change order of traversal,
|
||||
2. skip some elements,
|
||||
3. cancel traversal mid-way.
|
||||
|
||||
**`example`**
|
||||
```js
|
||||
// Basic use (for-of)
|
||||
|
||||
const nodeIterator = traverseGenerator(rootNode);
|
||||
for (const node of nodeIterator) {
|
||||
// do something with each node here
|
||||
}
|
||||
```
|
||||
------
|
||||
|
||||
**`example`**
|
||||
```js
|
||||
// Breadth-first
|
||||
|
||||
// note the order below
|
||||
const nodeIterator = traverseGenerator(rootNode, ["self", "sibling", "child"]);
|
||||
// rest - same as above
|
||||
```
|
||||
-----
|
||||
|
||||
**`example`**
|
||||
```js
|
||||
// Get first 3 nodes and then stop the generator
|
||||
|
||||
const nodeIterator = traverseGenerator(rootNode);
|
||||
|
||||
var count = 0;
|
||||
var next;
|
||||
while (
|
||||
count < 3 &&
|
||||
!(next = nodeIterator.next()).done
|
||||
) {
|
||||
count++;
|
||||
const node = next.value;
|
||||
// do something with each node here
|
||||
}
|
||||
|
||||
// Finish generator, to prevent memory leak
|
||||
nodeIterator.throw(new Error());
|
||||
```
|
||||
-----
|
||||
|
||||
**Parameters:**
|
||||
|
||||
@@ -64,5 +127,7 @@ ___
|
||||
Name | Type | Default |
|
||||
------ | ------ | ------ |
|
||||
`order` | "self" \| "child" \| "sibling"[] | ["self", "child", "sibling"] |
|
||||
`skipSelfForStartNode` | boolean | false |
|
||||
`skipSiblingForStartNode` | boolean | true |
|
||||
|
||||
**Returns:** *`IterableIterator<FiberNode>`*
|
||||
Reference in New Issue
Block a user