deepFind()

Returns the first element in the children array (and its children) that satisfies the provided testing function.

deepFind(
  children: ReactNode | ReactNode[],
  findFn: (child: ReactNode, index?: number, children?: ReactNode[]): ReactNode,
): ReactNode | undefined

Arguments

children
The children array from the element where is used.
findFn
Funcion to be called recursively each element (and its children) of the children array. Returns the first element that satisfies the provided testing function. It accepts three arguments:
child
The current child element being processed.
index
The index of the current child element being processed.
children
The children array that find was called upon.

Return Value

A new children array with the elements and their children that get produced by the callback function.

Example

import React, { ReactElement, ReactNode } from 'react';
import { render } from 'react-dom';
import { deepFind } from 'react-children-utilities';

interface Props {
  children?: ReactNode;
}

const DeepFound = ({ children }: Props): ReactElement => (
  <div>{deepFind(children, (child: ReactNode) => (child as ReactElement).type === 'i')}</div>
);

const Example = (): ReactElement => (
  <DeepFound>
    <b>1</b>
    <span>
      <i>2</i>
    </span>
    <i>3</i>
  </DeepFound>
);

render(<Example />, document.body)

// Result:
// <div>
//   <i>2</i>
// </div>