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

189
Views
¿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 answers
Answer question

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 Report

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 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!