Estoy tratando de completar datos de una matriz a través de una función recursiva, y esta función se invocaría cada vez que se actualicen los datos o el valor de búsqueda. Entiendo que para evitar que se exceda la pila de llamadas, se debe establecer un caso base, pero en mi caso pensé que lo tenía cubierto. También probé usando un contador de incrementos para restablecer la pila de llamadas cuando llega a cierto valor, pero eso no pareció funcionar.
¿Cómo puedo evitar que ocurra el problema de la pila máxima de llamadas? Cualquier ayuda es muy apreciada, gracias.
const filteredTreeData = useMemo(() => { function getObjects(array, target) { return array?.reduce((r, { title, key, children = [] }) => { if (title.toLowerCase().includes(target.toLowerCase())) { // Check and loop their children if (children?.length) { getObjects(children, target) } else { r?.push({ title, key }); } } else return; children = getObjects(children, target); if (children?.length) { r?.push({ title, key, children }) } return r; }, []); } return search.length > 0 ? getObjects(treeData, search) : treeData }, [treeData, search])