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

202
Visualizações
Intentando eliminar una clave y valores de un objeto, pero cuando intento eliminarlo, se rompe alguna funcionalidad

Estoy tratando de crear un botón Agregar div y un botón Eliminar div. Cuando selecciona un cierto div y hace clic en eliminar, quiero eliminar solo esa clave del objeto. El problema es cuando elimino y luego trato de crear un nuevo div, ya no crea los nuevos divs... No estoy seguro de lo que estoy haciendo mal o por qué solo funciona.

 import "./styles.css"; import { useEffect, useState } from "react"; // The parent component const App = () => { const [textBoxDivs, setTextBoxDivs] = useState({}); const addNewTextBox = () => { const numOfTextBoxDivs = Object.keys(textBoxDivs).length; console.log(numOfTextBoxDivs, "num"); setTextBoxDivs({ ...textBoxDivs, [`div${numOfTextBoxDivs + 1}`]: { isSelected: false, innerText: "text" } }); }; const selectItem = (e) => { const nextState = { ...textBoxDivs }; Object.keys(nextState).forEach((k) => { nextState[k].isSelected = false; }); nextState[e.target.id].isSelected = true; setTextBoxDivs(nextState); }; const removeSelectedItem = () => { const nextState = { ...textBoxDivs }; if (Object.keys(textBoxDivs).length > 0) { Object.keys(textBoxDivs).map((key) => { if (textBoxDivs[key].isSelected) { delete nextState[key]; return setTextBoxDivs(nextState); } return null; }); } }; return ( < div > < button onClick = { () => addNewTextBox() } > Click me to create a selectable div < /button> < button onClick = { (e) => removeSelectedItem(e) } > Click me to delete a selectable div < /button> { Object.keys(textBoxDivs).length > 0 && Object.keys(textBoxDivs).map((key, index) => { return ( < div style = { { border: textBoxDivs[key].isSelected ? "2px solid green" : "unset" } } onClick = { (e) => selectItem(e) } key = { index } id = { key } > { textBoxDivs[key].innerText } < /div> ); }) } < /div> ); }; export default App;
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

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

0

El problema en su código en la función addNewTextBox, específicamente en la línea

 [`div${numOfTextBoxDivs + 1}`]: {

Porque no significa necesariamente que esté agregando una nueva línea. En este caso, está asignando un valor a (div + número), pero a veces eso ya existe. Por ejemplo, si cambias esa línea por un número verdaderamente único, como la fecha, funciona:

 const addNewTextBox = () => { const numOfTextBoxDivs = Object.keys(textBoxDivs).length; console.log(numOfTextBoxDivs, "num"); setTextBoxDivs({ ...textBoxDivs, [`div${new Date().getTime()}`]: { isSelected: false, innerText: "text" } }); };
about 4 years ago · Juan Pablo Isaza Relatório

0

Actualice selectItem () y luego funciona:

 const selectItem = (e) => { const nextState = { ...textBoxDivs, setTextBoxDivs }; // setTextBoxDivs was missing Object.keys(nextState).forEach((k) => { nextState[k].isSelected = false; }); nextState[e.target.id].isSelected = true; setTextBoxDivs(nextState); };
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