ProductPage.jsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {useEffect} from "react";
  2. import {connect} from "react-redux";
  3. import {Typography} from "@mui/material";
  4. import {actionGoodFindOne} from "../actions/ActionGoodFind";
  5. import Switch from "react-router-dom/es/Switch";
  6. import Route from "react-router-dom/es/Route";
  7. import Page404 from "./404Page";
  8. import Breadcrumb from "../components/Breadcrumbs";
  9. const Goods = ({good:{_id, name, description, price, images}={}}) => {
  10. return (
  11. <>
  12. <Typography>{_id}</Typography>
  13. <Typography>{name}</Typography>
  14. <Typography>{description}</Typography>
  15. <Typography>{price}</Typography>
  16. </>
  17. )
  18. }
  19. const CGoods = connect(state => ({good: state.promise['goodFindOne']?.payload}))(Goods)
  20. const BlockProduct = ({match:{params:{_id}}, getData}) => {
  21. useEffect(() => {
  22. getData(_id)
  23. },[_id, getData])
  24. return(
  25. <>
  26. <Breadcrumb links={['good']}/>
  27. <CGoods key={_id} />
  28. </>
  29. )
  30. }
  31. const CBlockProduct = connect(null, {getData: actionGoodFindOne})(BlockProduct)
  32. const ProductPage = () => {
  33. return (
  34. <Switch>
  35. <Route path="/good/:_id" component={CBlockProduct} />
  36. <Route path="*" component={Page404} />
  37. </Switch>
  38. )
  39. }
  40. export default ProductPage