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

215
Visualizações
setState no activa el procesamiento después de eliminar el elemento del objeto

En mi aplicación puede establecer una restricción de edad en un enlace. Si hay una restricción de edad en el enlace, tendrá un elemento llamado ageRestriction en el estado del enlace que contiene un int que es la edad. Si no tiene restricción de edad no la habrá.

Cuando tengo la oportunidad de que el enlace tenga una restricción de edad, se ejecuta el siguiente código:

 useEffect(async () => { if(ageRestriction === false) { const newLink = link; delete newLink.ageRestriction setLink(newLink) } else if(ageRestriction === true) setLink({...link, ageRestriction: storedAge}) }, [ageRestriction])

que luego debería activar el siguiente código:

 useEffect(() => { const validate = validateLink(link) if(validate) { setError(validate) } setError({}) dispatch({type: 'update', link: link, index: index}) }, [link])

Si agrego una restricción de edad en la primera parte del código, se desencadena el uso de UseEffect en la segunda parte del código. Si elimino el elemento ageRestriction del objeto y configuro el estado, useEffect en la segunda parte del código no se activa. Que puedo hacer para solucionar esto gracias! por adelantado.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La dependencia de su segundo useEffect debe ser link.ageRestriction porque la comparación entre objetos se realiza por referencia, por lo que eliminar la propiedad del objeto de enlace no activa el efecto:

 useEffect(() => { const validate = validateLink(link) if(validate) { setError(validate) } setError({}) dispatch({type: 'update', link: link, index: index}) }, [link.ageRestriction])

Alternativamente, puede crear un nuevo objeto al eliminar la propiedad en el primer useEffect de la siguiente manera:

 useEffect(async () => { if(ageRestriction === false) { const newLink = link; delete newLink.ageRestriction setLink({ ...newLink }) } else if(ageRestriction === true) setLink({...link, ageRestriction: storedAge}) }, [ageRestriction])
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