我有一个Main.js组件,它路由到各种组件,包括Listing.js。
Main:它包含添加到购物车的一系列产品作为状态。
列表:它是产品的列表。它包含数据库中的所有产品作为状态。
我的问题:当我通过点击List组件的按钮将产品添加到购物车,它增加了产品加入购物车,更新状态,车的主要组成部分。这样做后,List组件会重新呈现,并且我会取消访问者在列表中设置的所有过滤器。
我想阻止 List 在其父组件的购物车状态更改时重新呈现。你知道如何做到这一点吗?我已经尝试过使用 shouldComponentUpdate,但没有成功。
Main.js(父组件)
import React from 'react';
import {Switch, Route, withRouter, Link} from "react-router-dom";
import {List} from "./Listing/List";
class Main extends React.Component
{
state={
cart:[],
};
removeFromCart = product => //REMOVES PRODUCT FROM CART
{
let cart = this.state.cart;
cart.map(item => {
if(item._id === product._id)
{
item.count--;
return item;
}
});
cart = cart.filter(item => item.count > 0);
this.setState({cart:cart}, () => {sessionStorage.setItem('cart', JSON.stringify(cart));});
};
addToCart = product => //ADD PRODUCT TO CART
{
let cart = this.state.cart;
let productExists = this.state.cart.map(item => {return item._id === product._id}).includes(true);
if(productExists)
{
cart = cart.map(item => {
if(item._id === product._id)
{
item.count++;
return item;
}
else
{
return item;
}
});
}
else
{
product.count = 1;
cart.push(product);
}
this.setState({cart: cart}, () => {sessionStorage.setItem('cart', JSON.stringify(cart));});
};
componentWillMount()
{
if(sessionStorage.getItem('cart')) this.setState({cart:JSON.parse(sessionStorage.getItem('cart'))});
}
皈依舞
富国沪深
浮云间
随时随地看视频慕课网APP
相关分类