react-router-dom 루트를 사용하여 페이지 이동 전참 실현

BrowserRouter 및 HashRouter 라우팅 모드

  • BrowserRouter
  • 만약에 프런트엔드에 브라우저 라우터를 사용한다면 루트를 변경할 때마다 서버에 요청을 보냅니다. 서버가 대응하는 경로가 대응하는 파일을 가리키도록 설정하지 않았기 때문에 자연히 404의 상황이 발생합니다.(초기화 페이지, 즉 라우팅이/일 경우 요청이 전송되지 않음)
  • HashRouter
  • hashRouter는 경로에 # 구분 경로를 추가하기 때문에 # 뒤에 있는 모든 요청은 서버에 전송되지 않습니다. 즉, 서버에 있어 경로는 여전히localhost:3000이고 루트는 전방으로 전환됩니다.


  • 서버 렌더링을 하려면 BrowserRouter를 사용하십시오. 개발 단계에서 웹 페이지 dev Server에서 설정historyApiFallback: true하거나 BrowserRouter를 사용하려면 서버 설정(node/nginx)을 추가하여 전방에서 보내는 요청이 대응하는 html 문서에 비추도록 합니다.아니면 Hash Router를 추천합니다.

    HashRouter 라우팅

  • 두 개의 js 파일을 새로 만듭니다. 각각'home'과'other'
  • 로 명명되었습니다.
    home.js 파일
    import React from 'react';
    
    export default class Home extends React.Component {
         
    
        constructor(props){
         
            super(props);
        }
    
        render() {
         
            return (
                <div>
                    {
         /*   */}
                    {
         /* 다른 페이지로 건너뛰기 */}
    
                    <button onClick={
          ()=>{
         
                        this.props.history.push({
         
                            pathname : '/other',
                            state :{
         
                                id:3
                            }
                        });
    
                        // replace 
                        // this.props.history.replace('/other');
                        // this.props.history.replace({
         
                        //     pathname:'/other',
                        //     state : {
         
                        //         id:4
                        //     }
                        // });
    
                        // 
                        // this.props.history.goBack();
                        }
                }>  other  </button>
                </div>
            )
        }
    }
    

    other.js 파일
    import React from 'react';
    
    export default class Other extends React.Component {
         
    
        constructor(props){
         
            super(props);
        }
        
        componentDidMount(){
         
            // 
            // console.log(this.props.match.params);
    
            // 
            console.log(this.props.history.location.state);
        }
    
        render() {
         
            return (
                <div>
                    <a href='#/'> home </a>
                </div>
            )
        }
    }
    
  • HashRouter 라우팅 구성 요소 새로 만들기
  • Router.js 파일
    import React from 'react';
    import {
         HashRouter, Route, Switch} from 'react-router-dom';
    import Home from './home';
    import Other from './other';
    
    const BasicRoute = () => (
       <HashRouter>
           <Switch>
               <Route exact path="/" component={
         Home}/>
               <Route exact path="/other" component={
         Other}/>
               {
         /*   */}
               {
         /*  */}
           </Switch>
       </HashRouter>
    );
    
    export default BasicRoute;
    

    위에서 정의한 HashRouter 루트 구성 요소는 두 페이지 구성 요소인 Home과 Other를 루트 구성 요소로 감싸고, 바깥쪽은 Switch로 루트 정합을 하고, 루트 구성 요소가 루트의 path와 일치하는 주소 표시줄이 발견되면 응답하는 페이지를 자동으로 불러옵니다.
  • 포털 파일 index.js 구성
  • import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import Router from './Router';
    
    ReactDOM.render(
    	<Router />,
    	document.getElementById('root')
    );
    

    페이지 이동:
  • a 태그 이동: 집으로 돌아가다
  • 함수 변환:
  • this.props.history.push('/other');
  • this.props.history.replace('/other');///push 또는 a 라벨 반복 사용을 피하고 순환이 끊어질 때 사용
  • this.props.history.goBack('/other');//상위 페이지로 돌아가기

  • 점프 전삼:
  • url 전삼
  • 루트 구성 요소 설정 점프 시 설정다른 페이지로 건너뛰기,react-router-dom는 /:를 통해 URL이 전달하는 매개 변수와 일치
  • 함수 스텔스 전참
  • 점프 함수에 파라미터 추가(push () 함수를 예로 들면)
    	//push() replace()、goBack() 
       this.props.history.push({
             
           pathname : '/other',
           state :{
             
                 id:3
          }
      });
    
  • 매개변수 세트를 보려면 다음과 같이 하십시오.
  • url전참방식: this.props.match.params
  • 함수 은식 전참 방식: this.props.history.location.state

  • BrowserRouter 라우팅

  • Router를 수정합니다.js 파일, BrowserRouter 라우팅 구성 요소 만들기
  • Router.js 파일
    import React from 'react';
    import {
         BrowserRouter, Route, Switch} from 'react-router-dom';
    import Home from './home';
    import Other from './other';
    
    const BasicRoute = () => (
       <HashRouter>
           <BrowserRouter>     
           <Route  exact  path="/"   component={
         Home}/>
           <Route  path="/other"  name="other" component={
         Other}/>
           </BrowserRouter>
       </HashRouter>
    );
    
    export default BasicRoute;
    

    페이지 이동:
  • a 태그 이동: , 주의: 도입import {Link} from 'react-router-dom';
  • 함수 변환: HashRouter 라우팅과 동일
  • 점프 전삼:
  • url 전삼
  • HTML 방식: , 참고: 도입import {Link} from 'react-router-dom';
  • 함수 스텔스 전참
  • 점프 함수에 매개변수를 추가하는 방법은 HashRouter 라우팅과 동일합니다
  • 매개변수 세트를 보려면 다음과 같이 하십시오.
  • 함수 스텔스 참조 방식: HashRouter 라우팅 방식과 동일

  • 이 문서의 개인 블로그 링크에 오신 것을 환영합니다.https://br-bai.github.io/2019/09/29/react-router-dom 루트를 사용하여 페이지 이동 전참/

    좋은 웹페이지 즐겨찾기