Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda