Quiero buscar elementos a través de una barra de búsqueda. Los elementos originales están en producción.
const [prod, setprod] = React.useState([]); const [getFiltered, setFiltered] = React.useState([]); const [getSearch,setSearch]=React.useState(""); const SearchItem=(text)=>{ if(text!=""){ const searched=prod.filter((item)=>{ const datachange=item.toLowerCase(); const textchange= text.toLowerCase(); return datachange.startsWith(textchange); }); setFiltered(searched); setSearch(text) } else{ setFiltered(prod); setSearch(text); }}Estoy de acuerdo con @lucasvw en que sería útil más información aquí.
Sin embargo, su condicional solo está validando ese text!="" , pero si el texto es otra cosa, como un número, una función o (más probablemente) undefined o null , esto arrojará.
Recomiendo cambiar a algo como esto:
if (typeof text === "string" && text != "") { # the rest of your code }EDITAR:
Lo sentimos, en realidad es el item que está lanzando.
La misma idea, pero prueba esto en su lugar:
const searched=prod.filter((item)=>{ if (typeof item !== "string") { return false; } const datachange=item.toLowerCase(); const textchange= text.toLowerCase(); return datachange.startsWith(textchange); });