Navbar.jsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React, { Component } from "react";
  2. import PropTypes from "prop-types";
  3. import { connect } from "react-redux";
  4. import { NavLink } from "react-router-dom";
  5. import { translate } from "react-i18next";
  6. @connect(state => ({
  7. loggedIn: state.user.get("loggedIn"),
  8. }))
  9. @translate(["navbar"], { wait: true })
  10. export default class Menu extends Component {
  11. static propTypes = {
  12. loggedIn: PropTypes.bool,
  13. t: PropTypes.func,
  14. };
  15. static defaultProps = {
  16. loggedIn: false,
  17. t: () => {},
  18. };
  19. getLink(to, text, canShow = true) {
  20. return (canShow) ? <NavLink to={ to } >{ text }</NavLink> : "";
  21. }
  22. render() {
  23. const { t } = this.props;
  24. return (
  25. <header className="Menu">
  26. {this.getLink("/", t("navbar:home"))}
  27. {this.getLink("/login", t("navbar:login"), !this.props.loggedIn)}
  28. {this.getLink("/register", t("navbar:register"), !this.props.loggedIn)}
  29. {this.getLink("/settings", t("navbar:settings"), this.props.loggedIn)}
  30. {this.getLink("/logout", t("navbar:logout"), this.props.loggedIn)}
  31. </header>
  32. );
  33. }
  34. }