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

169
Visualizações
El contexto de reacción no se actualiza en ciertos lugares

Al hacer clic en el botón, agrego información del producto al almacenamiento local y la configuro en contexto.

Estoy usando contexto en dos lugares: encabezado y página de productos, la sintaxis es casi la misma. Hay un encabezado de console.log y cada vez que estoy interactuando con el contexto, se dispara instantáneamente, lo que confirma que el contexto funciona bien. Sin embargo, cuando entro en la página de productos, necesito volver a cargarla una vez más para obtener los datos. ¿Porqué es eso?

archivo de contexto

 import React, { useState, useEffect } from "react"; export const LikedContext = React.createContext([{}, () => {}]); export const LikedProvider = (props) => { const [liked, setLiked] = useState(null); useEffect(() => { if (typeof window !== "undefined") { let likedData = localStorage.getItem("liked"); likedData = likedData ? JSON.parse(likedData) : ""; setLiked(likedData); } }, []); return ( <LikedContext.Provider value={[liked, setLiked]}> {props.children} </LikedContext.Provider> ); };

Encabezamiento

 export const LikedProductsIcon = () => { const [liked, setLiked] = useContext(LikedContext); console.log("liked header", liked); const likedCount = null !== liked && Object.keys(liked).length ? liked.totalProductsCount : ""; const totalPrice = null !== liked && Object.keys(liked).length ? liked.totalProductsPrice : ""; return ( <> <CartContainer to="/pamegti-produktai"> <CountCircle> <HeartSvg /> {likedCount ? <span>{likedCount}</span> : ""} </CountCircle> </CartContainer> </> ); };

Página de productos que gustan

 const LikedProducts = () => { const [liked, setLiked] = useContext(LikedContext); console.log("liked page", liked); return ( <Layout> <Container> {liked ? ( liked.products.map((product, index) => ( <ProductsCard product={product} blackText /> )) ) : ( <div>Pamėgtų produktų nėra.</div> )} </Container> </Layout> ); };
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si representa varios <LikedProviders> , cada uno tendrá su propio estado independiente. Establecer estado en uno de ellos no afectará al otro. La razón por la que se sincronizan cuando actualiza la página es que ambos se cargan desde el almacenamiento local y ven el mismo valor. Pero eso solo sucede durante la carga, y se desincronizarán después de eso.

Si desea que se comparta el estado, solo desea representar uno de ellos. Colóquelo en la parte superior de su árbol de componentes (app.js es un buen lugar) para que todos los componentes que lo necesiten puedan acceder a él y elimine el otro.

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