react router dom

react router dom



react router dom 검색
서버끄고, 터미널에 npm i react router dom입력

Homepage.js에 가면 Header와 Footer가 있는데, 지운다. Loginpage.js에서도 똑같이 지운다.
모든페이지에 Header와 Footer 가 있다면 App.js에 Header와 Footer 를 붙인다.
그리고 < Homepage.js /> 지운다.

router dom 설치후
1. index.js로 가서 <App /> 를 <BrowserRouter> </BorwserRouter>로 감싼다.
2. App.js로 가서 아래와 같이 해준다. (즉, 라우터는 객체를 바꿔치기 해준다.)
  <Header />
    <Route path="/" exact={true} component={HomPage} />
    <Route path="/login" exact={true} component={LoginPage} />
  <Footer />

클릭했을때, 페이지 경로로 이동하게 해보자.
Header.js로 가서
..생략
const Header = () => {
  return (
    <StyledHeaButtoderDiv backgroundColor="blue">
      <ul>
         <li> 
           <Link to="/">홈</Link> // (a 태그 쓰면 전체를 다시 불러오기때문에 쓰면안된다)

         </li>       
         <li> 
           <Link to="/login">로그인</Link>
         </li>
      </ul>
     </StyledHeaButtoderDiv>
  );
};

페이지끼리 던지고싶다면?
react router에서 props로 넘길 수 있는데, match.params를 쓴다.

App.js로 가서 라우터에 파라미터 입력
<Header />
    <Route path="/" exact={true} component={HomPage} />
    <Route path="/login/:id" exact={true} component={LoginPage} /> //:id입력
  <Footer />

Header.js로 가서
<Link to="/login/10">로그인</Link> // login뒤에 /링크에서 10이라 적고 넘겨준다. 그러면 match.params로 해서 LoginPage.js에서 props로 받는다.

LoginPage.js로 가서
..생략
const LoginPage = (props) => {
  console.log('LoginPage', props);  //Header.js에서 링크로받은 props에는 history(이전페이지, 다른페이지 이동가능한 객체), location, match(params에 {id:"10"}이라는 정보가 있다. 즉, 라우터인 App.js의 경로에서 받을 변수명을 :변수명으로 선언하고, 값은 header.js에서 /뒤에 값을 적어 보내면 LoginPage.js에서 props에 match.params에 값이 있다.
  console.log(props.match.params.id);
  return 
<div>
<button onClick={()=>props.history.go(-1)}>뒤로가기 </button> // 키를 입력하라는 오류뜨는데, Home.js에 추가해줘야하는데, 키(리스트나 컬랙션에 필요)는 그림그릴때, 구조변경하고 배열요소삭제할 때 필요한데 나중에 설명함, 또 props.history.go(-1)에서 history는 구조분할할당을 통해서 자주사용하면 빼두는게 편하다.
위에 const {history} = props; 로 해놓고, onClick에는 history.push("/") 이런식으로..
<Login />;
</div>
};

export default LoginPage;

<Link를 만들고 style을 변경하려면
const StyleHeadLink = styled.Link 로 하면 안되고, const StyleHeadLink = styled(Link)` color:red; `; 로 링크는 상속해서 써야 스타일변경할수 있다.

리액트 디자인 라이브러리 여러개 있다.
프로젝트할 때 부트스트랩을 써라.
npm install react-bootstrap bootstrap 입력

public>index.html에 bootstrap 사용하기 위한 <link~~~~ 소스 상단에 붙인다. 이렇게안하면 아니면 css할때 할대마다 import해서 써야한다.
음, 이거말고, index.js에  import bootstap 소스 를 하는게 더 낫겟네..

그리고 부트스트랩 사이트의 컴포넌트 에서 소스가져다와서 쓰면된다.
그리고 오류뜨면 컨트롤 스페이스 로 import 지정해주면되고, 부트스트랩에 a링크는 못쓴다. 예를들어 <Nav.Link href="/">Home</Nav.Link> 이렇게 되어있으면, 작동안한다.
그러므로  <Link to="/" className="nav-link">홈 </Link> 이런식으로 css로 되어있는 부트스트랩을 className으로 가져와서 .으로 되어있는 부분을 -로 바꿔준다.
찾아보려면 ws3shool에서 확인할수 있다.





'프론트엔드 > 리액트-데어프로그래밍 강좌정리' 카테고리의 다른 글

react styled component props 패싱  (0) 2021.07.22
react props  (0) 2021.07.22
react componets styled  (0) 2021.07.22
react useRef  (0) 2021.07.22
react useMemo  (0) 2021.07.22

댓글()
구독