我有一個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'))}); }
在父組件購物車狀態更新時,如何防止我的產品列表重新呈現?
皈依舞
2021-12-12 09:34:47