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

95
Visualizações
El estado de reacción cambia inesperadamente al intentar cambiar dinámicamente el estado

Tengo ciertas rutas definidas en routes.tsx .
Estoy usando esto para llenar dinámicamente una barra lateral (cajón de interfaz de usuario de material).
Las rutas tienen la siguiente estructura:

 const AppRoutes = { group_a: { title: "", icon: <material icon JSX>, path: "", children: { ...same structure as a group, but without further children } } }

Después de obtener las rutas, creé un objeto de estado para realizar un seguimiento de la expansión/contracción de los grupos.

 let menuGroups = Object.keys(AppRoutes); const [groupOpen, setGroupOpen] = React.useState(() => { const state = {}; for (let group of menuGroups) (state as any)[group] = true; return state; }); const handleGroupToggle = (group: string) => { setGroupOpen(state => (state as any)[group] = !(state as any)[group]); // something wrong here? idk };

Pero esto no está funcionando como se esperaba.
Inicialmente los grupos están abiertos como se esperaba. Pero al hacer clic en cualquier grupo, todos los grupos colapsan juntos. Y luego otro intento de volver a abrirlos da como resultado un error. Uncaught TypeError: Cannot create property 'group_a' on boolean 'false'
En una investigación más profunda, descubrí que el objeto de estado se ha convertido de alguna manera en un false booleano.

Aquí hay un codesandbox para replicar esto:https://codesandbox.io/s/flamboyant-rgb-oin62u?file=/src/App.js

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

0

Dos problemas:

  1. La devolución de llamada no devuelve el estado actualizado
  2. el estado esta mutado

Manejador fijo:

 const handleGroupToggle = (group) => { setGroupOpen((state) => ({ ...state, [group]: !state[group] })); };

Editar tonto-snyder-el445g

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