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

139
Visualizações
Hacer un cambio en una copia de un estado redux también actualiza el estado real en la tienda redux

Estoy viendo este comportamiento en el que si copio un estado redux a una variable local y realizo un cambio en esa variable, también actualiza mi tienda redux sin que yo use ningún tipo de despacho, aquí está mi código:

 // here is my action type inside my reducer case SET_USERS: return { ...state, users: action.payload, }; // and here i have a helper function to select a specific state and pass it to useSelector later on export const getUsersSelector = (state: RootState) => { return state.app.users; };

y estoy accediendo a mi estado de esta manera dentro de un gancho personalizado useUsers que tengo

 export const useUsers = () => { const users = useSelector(getUsersSelector); return {users} }

y estoy accediendo al valor de mis users en otro componente usando el useUsers :

 const ListUsers = () => { const {users} = useUsers() //i make a copy of my users state const copyOfUsers = users //and update the copied variable copyOfUsers.push({name: 'John'}) retunr (<View>{copyOfUsers.map((user)=><Text>{user.name}</Text>)}</View>) }

el problema que tengo es enviar un nuevo elemento a mi variable copyOfUsers también actualiza el estado de los users dentro de la tienda redux, no sé por qué sucede esto y si es un comportamiento normal, solo quería saber si esto es un error o un comportamiento intencional de redux? o como puedo evitarlo?

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

0

En realidad, está alterando shallow copy de la instancia de los users .

Primero debe crear una deep copy de la instancia de los users y luego operar en los datos.

Los usuarios son una Array , por lo que podría haber usado el slice para crear una copia profunda y luego debería haber insertado el nuevo objeto en la nueva copia de los usuarios. Eso habría evitado el reflejo de la mutación en su copia redux.

Tu código debería verse así:

 const {users} = useUsers() const copyOfUsers = users.slice() // this is actually created a deep copy of your array. copyOfUsers.push({name: 'John'}) // changing the new memory data hence will not reflect in redux state.
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