Advertisement
Guest User

Untitled

a guest
Jul 15th, 2021
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, {useState, useEffect} from 'react';
  2. import { products } from './products.js';
  3. import ImageModal from './ImageModal.jsx';
  4.  
  5. const Store = () => {
  6.     const localStorageCart = localStorage.getItem('shoppingCart') || '[{}]';
  7.     const generatedCart = JSON.parse(localStorageCart);
  8.     const [showModal, setShowModal] = useState(false);
  9.     const [modalImage, setModalImage] = useState('');
  10.     const [shoppingCart, setShoppingCart] = useState(generatedCart);
  11.  
  12.     const addProductToCart = (product) => {
  13.         setShoppingCart([...shoppingCart, product])
  14.     }
  15.  
  16.     useEffect(() => {
  17.         const filteredCart = shoppingCart.filter(value => Object.keys(value).length !== 0);
  18.         localStorage.setItem('shoppingCart', JSON.stringify(filteredCart))
  19.     }, [JSON.stringify(shoppingCart)]);
  20.    
  21.     return (
  22.         <section>
  23.             <div className="products-grid">
  24.                 {products.map((product) => (
  25.                     <div className="product"  key={product.id}>
  26.                         <img src={product.image} alt="stax product"
  27.                     onClick={() => {setShowModal(true); setModalImage(product.image) }}/>
  28.                         <h3>{product.name}</h3>
  29.                         <p>{product.description}</p>
  30.                         <div className="price-row">
  31.                             <div>
  32.                                 {product.price}
  33.                             </div>
  34.                             <div>
  35.                                 <button onClick={() => addProductToCart(product)}>Add To Cart</button>
  36.                             </div>
  37.                         </div>
  38.                     </div>
  39.                 ))}
  40.                 <ImageModal onClose={() => setShowModal(false)} showModal={showModal} productImage={modalImage} />
  41.             </div>
  42.         </section>
  43.             )
  44. }
  45.  
  46. export default Store;
  47.  
  48.  
  49. import React, { useEffect } from 'react';
  50. import { Link } from 'react-router-dom';
  51. import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
  52. import { library } from '@fortawesome/fontawesome-svg-core';
  53. import { fas } from '@fortawesome/free-solid-svg-icons';
  54. library.add(fas)
  55.  
  56. const Nav = () => {
  57.     const getCartFromLocalStorage = localStorage.getItem('shoppingCart');
  58.     const generatedCart = JSON.parse(getCartFromLocalStorage) || 0;
  59.  
  60.     useEffect(() => {
  61.  
  62.     })
  63.     return (
  64.         <nav>
  65.             <div className=" navbar">
  66.                 <div className='nav-left'>
  67.                     <ul>
  68.                         <li>
  69.                             <Link to="/">Home</Link>
  70.                         </li>
  71.                         <li>
  72.                             <Link to="/about">About</Link>
  73.                         </li>
  74.                         <li>
  75.                             <Link to="/store">Store</Link>
  76.                         </li>
  77.                     </ul>
  78.                 </div>
  79.                 <div className="nav-center">
  80.                     <h1>STAX World</h1>
  81.                 </div>
  82.                 <div className='nav-right'>
  83.                     <Link to="/checkout"><FontAwesomeIcon icon='shopping-cart' size='lg' /></Link>({generatedCart.length})
  84.                 </div>
  85.             </div>
  86.         </nav>
  87.     )
  88. }
  89.  
  90. export default Nav;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement