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

350
Visualizações
El filtro del kit de herramientas Redux () no funciona cuando se desea mostrar una nueva matriz al mismo tiempo

Actualmente estoy construyendo una tienda de ropa en la que puede agregar productos al carrito y eliminar cada uno de ellos como desee y hace que el carrito se vuelva a representar y muestre un nuevo carrito sin ese producto dentro de él.

así que hice un Slice for cart en redux. la parte 'addProduct' funciona bien, pero el reductor 'deleteProduct' que usa filter() no funciona. (cuando hago clic en mi botón Eliminar, no sucede nada y no hay cambios en la diferencia en Redux Devtools)

mi rebanada:

 const selectedProductsSlice = createSlice({ name:'selectedProducts', initialState:{ productList:[], checkoutPrice:0, }, reducers: { addProduct:(state,{payload}) => { state.productList.push(payload) state.checkoutPrice += payload.price }, deleteProduct:(state,{payload}) => { state.productList.filter((foundProduct) => foundProduct.id !== payload.id) } }});

mi botón y handleDelete:

 <button className="btn-delete" onClick={handleDelete(product)}>Delete</button> function handleDelete(p) { console.log(p) dispatch(deleteProduct(p.product)) }

editar: el filtro no funcionó de todas las formas posibles que probé. así que cambié mi forma e hice esto en su lugar para trabajar. pero aún me pregunto por qué el método filter() no funcionó correctamente.

 deleteProduct: (state, { payload }) => { const foundIndex = state.productList.findIndex((p) => { return p.product.id === payload.id }) state.productList.splice(foundIndex,1) }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

La operación de filter crea una nueva matriz sin cambiar la instancia existente. Por lo tanto, debe asignarlo a state .

 deleteProduct: (state, { payload }) => { return { ...state, productList: state.productList.filter( foundProduct => foundProduct.id !== payload.id ) }; };

También debe cambiar la forma en que llama a handleDelete en el controlador onClick.

 onClick={() => handleDelete(product)}
about 4 years ago · Juan Pablo Isaza Relatório

0

Pasé exactamente por el mismo problema que tú. Resolví este problema solo para mover mi reductor a otro reductor existente
Espero que lo superes. no pude pasar de largo

about 4 years ago · Juan Pablo Isaza Relatório

0

Los métodos de filtro devuelven una nueva matriz, por lo que debe actualizar su herramienta de matriz existente. Por favor actualice su porción:

 const selectedProductsSlice = createSlice({ name:'selectedProducts', initialState:{ productList:[], checkoutPrice:0, }, reducers: { addProduct:(state,{payload}) => { state.productList.push(payload) state.checkoutPrice += payload.price }, deleteProduct:(state,{payload}) => { state.productList=state.productList.filter((foundProduct) => foundProduct.id !== payload.id) } }});
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