DetailOrder.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { useEffect, useState } from 'react';
  2. import { useRouteMatch } from 'react-router-dom';
  3. import { connect } from 'react-redux';
  4. import s from './DetailOrder.module.css';
  5. import { actionLoading } from '../../../redux/loading/action';
  6. import { orderById } from '../../../api-data';
  7. import { IOrderDetail } from '../../../typescript/orders/interfaces';
  8. import {
  9. TRouteMatchId,
  10. TDispatchLoading,
  11. } from '../../../typescript/orders/types';
  12. function DetailOrder({ dispatchLoading }: TDispatchLoading) {
  13. const {
  14. params: { id },
  15. }: TRouteMatchId = useRouteMatch();
  16. const [order, setOrder] = useState<IOrderDetail | null>(null);
  17. useEffect(() => {
  18. async function getGood() {
  19. try {
  20. dispatchLoading(true);
  21. const data = await orderById<IOrderDetail>(id);
  22. setOrder(data);
  23. } catch (e) {
  24. console.error(e);
  25. } finally {
  26. dispatchLoading(false);
  27. }
  28. }
  29. getGood();
  30. }, [dispatchLoading, id]);
  31. return order ? (
  32. <div className={s.detailOrder_wrapper}>
  33. <p>_id : {order._id ? order._id : 'missed'}</p>
  34. <p>createdAt : {order.createdAt ? order.createdAt : 'missed'}</p>
  35. </div>
  36. ) : null;
  37. }
  38. const mapDispatchToProps = (dispatch: any) => ({
  39. dispatchLoading: (value: boolean) => dispatch(actionLoading(value)),
  40. });
  41. export default connect(null, mapDispatchToProps)(DetailOrder);