Header.tsx 3.79 KB
Newer Older
mayi's avatar
mayi committed
1
//函数式组件
2
import * as React from "react";
3
// import { Component } from "react";
4 5 6 7
import logo from "../../assets/logo.svg";
import styles from "./Header.module.css";
import { Layout, Typography, Input, Menu, Button, Dropdown } from "antd";
import { GlobalOutlined } from "@ant-design/icons";
8 9 10
import { useSelector } from "../../redux/hooks";
import { useDispatch } from "react-redux";
import { useTranslation } from "react-i18next";
11 12
import {
  useHistory,
13 14 15
  // useParams,
  // useLocation,
  // useRouteMatch,
16
} from "react-router-dom";
17 18 19 20
import {
  changeLanguageActionCreator,
  addLanguageActionCreator,
} from "../../redux/language/languageActions";
21 22
export const Header: React.FC = () => {
  const history = useHistory();
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
  // const params = useParams();
  // const location = useLocation();
  // const match = useRouteMatch();
  const languageList = useSelector((state) => state.languageList);
  const language = useSelector((state) => state.language);
  const dispatch = useDispatch();
  const { t } = useTranslation();
  const changeLanguage = (e) => {
    if (e.key === "new") {
      // this.props.addLanguage("新语言", "新语言");
      dispatch(addLanguageActionCreator("新语言", "新语言"));
    } else {
      // this.props.changeLanguage(e.key);
      dispatch(changeLanguageActionCreator(e.key));
    }
  };

40 41 42 43 44 45 46 47 48 49
  return (
    <>
      <div className={styles["app-header"]}>
        {/* top-header */}
        <div className={styles["top-header"]}>
          <div className={styles["inner"]}>
            <Typography.Text>让旅游更幸福</Typography.Text>
            <Dropdown.Button
              style={{ marginLeft: 15 }}
              overlay={
50 51 52 53 54
                <Menu onClick={changeLanguage}>
                  {languageList.map((item, index) => (
                    <Menu.Item key={item.code}>{item.name}</Menu.Item>
                  ))}
                  <Menu.Item key={"new"}>{t("header.slogan")}</Menu.Item>
55 56 57 58
                </Menu>
              }
              icon={<GlobalOutlined />}
            >
59
              {language === "zh" ? "中文" : "English"}
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
            </Dropdown.Button>
            <Button.Group className={styles["button-group"]}>
              <Button onClick={() => history.push("register")}>注册</Button>
              <Button onClick={() => history.push("signin")}>登陆</Button>
            </Button.Group>
          </div>
        </div>
        <Layout.Header className={styles["main-header"]}>
          <span onClick={() => history.push("/")}>
            <img src={logo} alt="logo" className={styles["App-logo"]} />
            <Typography.Title level={3} className={styles.title}>
              React旅游网
            </Typography.Title>
          </span>

          <Input.Search
            placeholder={"请输入旅游目的地、主题、或关键字"}
            className={styles["search-input"]}
          />
        </Layout.Header>
        <Menu mode={"horizontal"} className={styles["main-menu"]}>
          <Menu.Item key={1}>旅游首页</Menu.Item>
          <Menu.Item key={2}>周末游</Menu.Item>
          <Menu.Item key={3}>跟团游</Menu.Item>
          <Menu.Item key="4"> 自由行 </Menu.Item>
          <Menu.Item key="5"> 私家团 </Menu.Item>
          <Menu.Item key="6"> 邮轮 </Menu.Item>
          <Menu.Item key="7"> 酒店+景点 </Menu.Item>
          <Menu.Item key="8"> 当地玩乐 </Menu.Item>
          <Menu.Item key="9"> 主题游 </Menu.Item>
          <Menu.Item key="10"> 定制游 </Menu.Item>
          <Menu.Item key="11"> 游学 </Menu.Item>
          <Menu.Item key="12"> 签证 </Menu.Item>
          <Menu.Item key="13"> 企业游 </Menu.Item>
          <Menu.Item key="14"> 高端游 </Menu.Item>
          <Menu.Item key="15"> 爱玩户外 </Menu.Item>
          <Menu.Item key="16"> 保险 </Menu.Item>
        </Menu>
      </div>
    </>
  );
};