Header.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import styles from "styles/Header.module.scss";
  2. import { Link } from "react-router-dom";
  3. import GetIcon from "components/GetIcon";
  4. import clsx from "clsx";
  5. import CategoryItem from "./CategoryItem";
  6. import {CATEGORY_FIND} from 'apollo/queries';
  7. import {useQuery} from "@apollo/client";
  8. import cartStore from "stores/cartStore";
  9. import { observer } from 'mobx-react';
  10. import _ from 'lodash';
  11. const Header = () => {
  12. const {data} = useQuery(CATEGORY_FIND, {variables: {query: "[{\"parent\":null}]"}});
  13. return (
  14. <header className={styles.header}>
  15. <div className={styles.logo}>
  16. <Link to="/">
  17. <h2>react store</h2>
  18. </Link>
  19. </div>
  20. <div className={styles.navContainer}>
  21. <nav className={styles.nav}>
  22. <ul>
  23. <li>
  24. <Link to="/" onClick={(e) => e.preventDefault()} className={styles.a}>
  25. Categories
  26. </Link>
  27. <ul className={styles.subMenu}>{_.get(data, 'CategoryFind', []).map((cat, index) => <CategoryItem data={cat} key={index} />)}</ul>
  28. </li>
  29. <li>
  30. <Link
  31. to="/"
  32. className={clsx(styles.basketBtn, styles.a)}
  33. onClick={(e) => {
  34. e.preventDefault();
  35. cartStore.setIsOpen((oldState) => !oldState);
  36. }}
  37. >
  38. <GetIcon icon="BsCart4" size={25} color="#ffffff" />
  39. {cartStore.count > 0 && <span className={styles.basketLength}> {cartStore.count} </span>}
  40. </Link>
  41. </li>
  42. </ul>
  43. </nav>
  44. </div>
  45. </header>
  46. );
  47. };
  48. export default observer(Header);