Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
(React, JS, TS) la función funciona "onClick" pero no en "KeyPress"

Tengo una función que funciona según lo previsto cuando se llama "onClick", pero omite una declaración if cuando se llama con "onKeyPress".

contexto

solo imagine una entrada donde pueda buscar recetas de comida (por ejemplo, "pizza") y obtenga una lista de recetas de una API con las recetas.

todo el código relevante explicado

↓ Esta variable almacena un valor booleano. Comprueba si una consulta de una entrada está incluida en alguno de los títulos de la lista de recetas que se muestra actualmente.

 const recipeListHasQuery = recipectx.data.map((recipe: any) => { return recipe.title.toLowerCase().includes(query); })

Si al menos uno de los títulos de recetas de la lista no incluye la consulta que estamos buscando, podemos borrar la lista.

(básicamente, si buscó "pizza" y ahora busca "hamburguesa" y no hay "hamburguesa" en ningún título de las recetas de pizza, podemos borrar la lista y mostrar las recetas de hamburguesas)

↓ Esta función funciona cuando se llama "onClick" no funciona en "onKeyPress".

 const clearView = () => { console.log('i log on enter') ↓ does not work on enter if (!recipeListHasQuery.includes(true)) { const recipeList = document.querySelector(".recipe__list") as HTMLElement; recipeList!.innerHTML = ""; }

↓ Esta función funciona cuando se llama "onKeyPress" pero omite la instrucción if

 const HandleInputOnKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => { if (event.key === "Enter") { HandleInputChange(event as any); ← this works fine on "Enter" // clearView(); ← works on "Enter" but omits the if statement ↓ just typing it out does not work either if (!recipeListHasQuery.includes(true)) { const recipeList = document.querySelector(".recipe__list") as HTMLElement; recipeList!.innerHTML = ""; } } };

entonces el problema es que en lugar de tener una lista de recetas, con cada consulta, agregas una nueva

↓ Esta es la forma en que estoy llamando a las funciones.

 <form> <input onKeyPress={HandleInputOnKeyPress}></input> <button onClick={clearView}> Search </button> </form>
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La función se llama correctamente, por lo que esto no tiene nada que ver con los eventos de clic y pulsación de tecla. El problema está en la lógica, particularmente en su declaración if dentro de la función clearView. Puede console.log(recipeListHasQuery.includes(true)) justo antes del if y depurar la lógica desde allí

Si tiene dificultades con eso, siéntase libre de agregar su código a jsfiddle, lo ayudaré a depurarlo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!