19.12.04 withRouter

sykim·2019년 12월 4일
0

헤더가 어떤 라우터에 있는지 알게 하자

파일 구조
src/Components/Header.js

Header.js

import React from "react";
import { Link, withRouter  } from "react-router-dom";
import styled from "styled-components";


const Header = styled.header`
...
`;
const List = styled.ul`
...
`;
const Item = styled.li`
  margin-right:10px;
  border-bottom: 3px solid

  // 2. props.current 값이 true면 #3498db, 아니면 투명
  ${props => (props.current ? "#3498db" : "transparent")};
`;
const SLink = styled(Link)`
...
`;

// 1. 헤더에 proprs 주기 (withRouter로 감싸줘야 props 사용 가능)
export default withRouter(({ location: { pathname } }) => (
    <Header>
    	console.log(proprs)
      <List>
      	// 3. 각 라우터에 current 값 설정
        <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>
  ));
profile
블로그 이전했습니다

2개의 댓글

comment-user-thumbnail
2019년 12월 8일

"Header는 Route가 아니기 때문에 Router에서 location 정보를 받을 수 없다."

답글 달기
comment-user-thumbnail
2019년 12월 8일

"디폴트로 Router는 모든 Route들에게 props를 준다"

답글 달기