App.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react';
  2. import {
  3. Switch,
  4. Route,
  5. } from 'react-router-dom';
  6. import './App.scss';
  7. import TopicsContainer from './Topics/TopicsContainer';
  8. import NavConatiner from './Nav/NavConatiner';
  9. import PageLoader from './common/PageLoader/PageLoader';
  10. interface AppProps {
  11. isClusterListFetched: boolean;
  12. fetchClustersList: () => void;
  13. }
  14. const App: React.FC<AppProps> = ({
  15. isClusterListFetched,
  16. fetchClustersList,
  17. }) => {
  18. React.useEffect(() => { fetchClustersList() }, [fetchClustersList]);
  19. return (
  20. <div className="Layout">
  21. <nav className="navbar is-fixed-top is-white Layout__header" role="navigation" aria-label="main navigation">
  22. <div className="navbar-brand">
  23. <a className="navbar-item title is-5 is-marginless" href="/">
  24. Kafka UI
  25. </a>
  26. </div>
  27. </nav>
  28. <main className="Layout__container">
  29. <NavConatiner className="Layout__navbar" />
  30. {isClusterListFetched ? (
  31. <Switch>
  32. <Route path="/clusters/:clusterId/topics" component={TopicsContainer} />
  33. <Route exact path="/">
  34. Dashboard
  35. </Route>
  36. </Switch>
  37. ) : (
  38. <PageLoader />
  39. )}
  40. </main>
  41. </div>
  42. );
  43. }
  44. export default App;