Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
¿Cómo obtener valor de un componente a otra página/componente sin navegación?

Tengo un componente de barra de navbar en el que hay una barra de búsqueda de entrada. Actualmente estoy tomando el valor de la barra de búsqueda y navego al componente Results y accedo al valor de entrada useParams .

Tengo let [ result, setResult ] = useState([]); en mi componente Results porque los resultados pueden cambiar después de ingresar la búsqueda con botones en la página. El problema es que no puedo establecer el resultado inicial mientras useState porque lo estoy obteniendo de una API.

Entonces, cada vez que renderizo, primero obtengo una matriz vacía y una promesa fallida, después de lo cual obtengo la deseada. ¿Cómo arreglar esto? Necesito que la barra de búsqueda esté en la barra de navegación.

Este es el código. Nuevo en Reaccionar.

 const Navbar = () => { let navigate = useNavigate(); const handleKeyDown = (event) => { if (event.key === 'Enter') { let value = event.target.value; navigate(`/results/${value}`); } } return ( <nav className='navigation'> <div className='left-slot'> <button>runtime</button> </div> <div className="middle-slot"> <input className="after" placeholder="get runtimes" onKeyDown={handleKeyDown}> </input> </div> <div className='right-slot'> <button>How It Works</button> <button>Coming Soon</button> </div> </nav> ); }
 const Results = () => { let { value } = useParams(); let [ result, setResult ] = useState(); useEffect(() => { fetchArrayByPage(value, page, option).then(res => setResult(res)) }, [value]) console.log(value); console.log(result); return (<div></div>) }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

pruebe una función de ajuste para buscar y configurar. Yo sugeriría algo como esto:

 async function handleResults(){ const res = await fetchArrayByPage(value, page, option) setResult(res) }

entonces puedes llamarlo dentro de useEffect

about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy completamente seguro de por qué su código no funciona, así que le daré tres opciones.

Opción 1 : si su problema es que el value no está definido.

Cambie su useEffect en Results a esto:

 useEffect(() => { fetchArrayByPage(value && value.length ? value : '', page, option).then(res => setResult(res)) }, [value]);

Opción 2 : si necesita pasar accesorios, la barra de Navbar y los Results no están en rutas separadas.

Simplemente pase el value como accesorios de Navbar a Results .

Opción 3 - Paso de componentes sin apoyos.

Utilice la API de contexto . Esto le permite compartir datos entre componentes sin necesidad de pasar accesorios manualmente de padre a hijo.

  1. Inicializar variables en contexto.
  • Cree un archivo separado que contenga contexto.
 import React, { createContext } from 'react'; const NavbarContext = createContext(null); export default NavbarContext;
  • Importe dicho contexto a App.js o App.tsx si está usando Typescript.
  • Declare variables y guárdelas en un objeto para referencia posterior.
 const [value, setValue] = useState(''); ... const variables = { value, setValue, ..., };
  • Envolver con el proveedor. Pase variables de contexto al proveedor, lo que permite que los componentes consuman variables .
 return ( <NavbarContext.Provider value={variables}> ... </NavbarContext.Provider> );
  1. Importe y use todas sus variables en Navbar y Results .
 const { value, setValue, ... } = useContext(NavbarContext);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda