}<PrimaryButton className='w-44' onClick={() => addToCart()}>Add To Cart2</PrimaryButton> 4、CSS & HTML(Shopping Cart) .shopping-cart-group { &.shake { animation: shakeCart 0.4s ease-in-out forwards; } } @keyframes shakeCart { 25% { transform: translateX(6px); } 50% { tran...
实现addToCart 方法: addToCart = (product) => { // 判断购物车中是否已经存在该商品,如果存在,则更新数量,否则添加新商品到购物车 let existingProduct = this.state.cart.find(item => item.id === product.id) if (existingProduct) { existingProduct.quantity++ } else { this.setState({ cart: [...
带参deltocartComponents触发了一个带参的deltocart方法,deltocart来自action,在组件中使用的时候需要引用: action/XXX.js exportconstADD_TO_CART='ADD_TO_CART'exportconstDEL_TO_CART='DEL_TO_CART'exportfunctionaddtocart(item){return{type:ADD_TO_CART,payload:item}}exportfunctiondeltocart(id){return{t...
{product.description} Add to Cart ); } export default memo(ProductItem); 这个示例中,商品项的类名还是分为两个部分:块(products)、元素(item\header)、修饰符(header\name\date\description\button)。同时,我们使用单一职责原则,将商品项的显示和添加到购物车的逻辑分别封装成了两个组件。 接下来我们还需要...
cart ? JSON.parse(cart) : []; } function App() { return ( <Product id="1" name="Laptop" price={999} /> <Product id="2" name="Smartphone" price={499} /> {/* 显示购物车内容 */} Cart {getCart().map(item => ( {item.name} - ${item.price} ))} ); } export ...
// reducer/index.jsconstinitState={cartlist:[]}functionreducer(state=initState,action){switch(action.type){// 添加商品case'ADD_TO_CART':// 返回一个新的State,这个state会自动覆盖store中的旧数据return{cartlist:[action.goods,...state.cartlist]}// 删除商品case'REMOVE_FROM_CART':return{cartlist...
case 'ADD_TO_CART': // 返回一个新的State,这个state会自动覆盖store中的旧数据 return { cartlist: [action.goods, ...state.cartlist] } // 删除商品 case 'REMOVE_FROM_CART': return { cartlist: state.cartlist.filter(item => item.goods_id != action.goods_id) ...
(e)} className="edit-product"> Add to cart / <Link to={`/product/${e.id}`} title={`preview ${e.Name}`}> Preview </Link> ); }; return ( <Wrapper> <DataGrid data={productsList} ActionsTemplate={ActionsTemplate} /> </Wrapper> ); }; export default Browse; The product li...
proid }> { item.proname } 3、加入购物车 设计加入购物车接口 utils/api.js /** * 加入购物车 * @param {*} type */ const addCart = (userid, proid, num) => { return new Promise(resolve => { request.get('/cart/add', { params: { userid, proid, num } }).then(re...
import { ADD_TO_CART, REMOVE_FROM_CART, UPDATE_CART_ITEM_QUANTITY } from './actions';const initialState = {cart: [],};function cartReducer(state = initialState.cart, action) {switch (action.type) {case ADD_TO_CART:// 简化处理,假设每个商品只有一个实例在购物车中const existingItem = st...