App.jsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { Suspense } from "react";
  2. import { QueryClient, QueryClientProvider } from "react-query";
  3. import { BrowserRouter as Router } from "react-router-dom";
  4. import { RecoilRoot } from "recoil";
  5. import { ToastContainer } from "react-toastify";
  6. import "react-toastify/dist/ReactToastify.css";
  7. import "./react-confirm-alert.css";
  8. import Waiter from "./ui/Waiter";
  9. import MainRoute from "./MainRoute";
  10. const queryClient = new QueryClient();
  11. const App = () => {
  12. return (
  13. <Suspense fallback={<Waiter message={"Loading…"} />}>
  14. <RecoilRoot>
  15. <QueryClientProvider client={queryClient}>
  16. <Router>
  17. <MainRoute />
  18. </Router>
  19. </QueryClientProvider>
  20. </RecoilRoot>
  21. <ToastContainer
  22. position="top-center"
  23. autoClose={3000}
  24. hideProgressBar={false}
  25. newestOnTop
  26. closeOnClick
  27. rtl={false}
  28. pauseOnFocusLoss
  29. draggable
  30. pauseOnHover
  31. />
  32. <div id="panel-container" />
  33. <div id="modal-container" />
  34. </Suspense>
  35. );
  36. };
  37. export default App;