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

253
Visualizações
El niño cambia el valor en el padre

Paso una matriz del padre, en el hijo lo recibo a través de un accesorio y lo paso al estado. Después de eso, necesito agregar un campo a la matriz, lo hago en useEffect. Pero tan pronto como esto pasa, los datos también cambian en el padre. ¿Por qué está pasando esto?

Padre:

 <IncomeDrawer values={selectRowData}/>

Niño:

 const [values, setValues] = useState(props.values); useEffect(() => { let newData = values.docSubs; function updateTreeTable(data) { for (let i = 0; i < data.length; i++) { data[i] = { ...data[i], recordIndex: recordIndex }; recordIndex++; if (data[i].hasOwnProperty('children')) { updateTreeTable(data[i].children); } } }; updateTreeTable(newData); setValues({ ...values, docSubs: newData }) }, [])
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que la solución podría ser usar el operador de propagación así:

 const [values, setValues] = useState([...props.values]);

Como señaló Khabir , el problema está en la referencia de accesorios.

PD Lo siento, no comenté, pero no tengo la reputación necesaria.

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando pasa accesorios a su child component , pasa la reference . por lo tanto, si cambia el valor en child component que proviene del elemento parent , cambiará tanto en el componente child and parent .

Para evitar esto, debe clone el props value en su child component antes de cambiarlo.

En React, en realidad en JavaScript , hay muchas formas de clone objeto/matriz

Usando la función de corte

 const [values, setValues] = useState(props.values.slice());

Uso del operador de propagación

 const [values, setValues] = useState([...props.values]);

Usando la función JSON.parse y JSON.stringify

 const [values, setValues] = useState(JSON.parse(JSON.stringify(props.values));

Hay algunas otras formas de clonar su matriz. lo google si quieres saber.

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