DescendantsPageList.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React, { useState } from 'react';
  2. import { useSWRxPageList } from '~/stores/page';
  3. import PageList from './PageList/PageList';
  4. import PaginationWrapper from './PaginationWrapper';
  5. type Props = {
  6. path: string,
  7. }
  8. const DescendantsPageList = (props: Props): JSX.Element => {
  9. const { path } = props;
  10. const [activePage, setActivePage] = useState(1);
  11. const { data, error } = useSWRxPageList(path, activePage);
  12. function setPageNumber(selectedPageNumber) {
  13. setActivePage(selectedPageNumber);
  14. }
  15. if (error != null) {
  16. return (
  17. <div className="my-5">
  18. <div className="text-danger">{error.message}</div>
  19. </div>
  20. );
  21. }
  22. if (data === undefined) {
  23. return (
  24. <div className="wiki">
  25. <div className="text-muted text-center">
  26. <i className="fa fa-2x fa-spinner fa-pulse mr-1"></i>
  27. </div>
  28. </div>
  29. );
  30. }
  31. return (
  32. <>
  33. <PageList pages={data} />
  34. <PaginationWrapper
  35. activePage={activePage}
  36. changePage={setPageNumber}
  37. totalItemsCount={data.totalCount}
  38. pagingLimit={data.limit}
  39. align="center"
  40. />
  41. </>
  42. );
  43. };
  44. export default DescendantsPageList;