React
리액트 withRouter를 활용한 현재 페이지 인식
정중식
2019. 11. 9. 20:43
withRouter
withRouter 로 컴포넌트를 감싸면 컴포넌트에 props안에 history,location등등의 오브젝트들이잇어서 이놈들을 이용해서 앞페이지 뒷페이지 왔다갔다 할수있음
현재 어떤 페이지에 있는지 체크할수있게됨
언제나 current = true임
- <Item current={pathname === "/"}>
import React from "react";
import { Link, withRouter } from "react-router-dom";
import styled from "styled-components";
// withRouter덕분에 어떤 컴포넌트와도 연결할 수 있게됨
const Header = styled.header`
color: white;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 0px 10px;
background-color: rgba(20, 20, 20, 0.8);
z-index: 10;
box-shadow: 0px 1px 5px 2px rgba(0, 0, 0, 0.8);
`;
const List = styled.ul`
display: flex;
`;
const Item = styled.li`
width: 50px;
height: 50px;
text-align: center;
border-bottom: 3px solid ${props =>
props.current ? "#3498db" : "transparent"};
transition: border-bottom 0.5s ease-in-out;
`;
const SLink = styled(Link)`
height: 50px;
display: flex;
align-items: center;
justify-content: center;
`;
// const HeaderC = props => (
// <Header>
// {console.log(props)} => props정보가 나옴
// <List>
// <Item current={false}>
// <SLink to="/">Movies</SLink>
// </Item>
// <Item current={true}>
// <SLink to="/tv">TV</SLink>
// </Item>
// <Item current={false}>
// <SLink to="/search">Search</SLink>
// </Item>
// </List>
// </Header>
// );
// export default withRouter(HeaderC);
// 위의 코드는 아래 코드의 다른버전임
export default withRouter(({ location: { pathname } }) => (
<Header>
<List>
<Item current={pathname === "/"}>
<SLink to="/">Movies</SLink>
</Item>
<Item current={pathname === "/tv"}>
<SLink to="/tv">TV</SLink>
</Item>
<Item current={pathname === "/search"}>
<SLink to="/search">Search</SLink>
</Item>
</List>
</Header>
));