React-router v4 경로 설정 방법 소결

4825 단어 react.routerv4
본 고 는 주로 React-router v4 경로 설정 방법 에 대한 소결 을 소개 하고 여러분 에 게 공유 하 며 자신 에 게 도 필 기 를 남 겼 습 니 다.
1.스위치,라 우 터,라 우 트 의 차이
1、Route
Route 는 location 와 ui 의 가장 직접적인 관 계 를 맺 는 것 입 니 다.
2、Router
react-router v4 에서 Router 는 StaticRouter,Memory Router,BrowserRouter,HashRouter,NativeRouter 로 나 뉘 었 다.
Memory Router,BrowserRouter,HashRouter 는

import { Router } from 'react-router'
<!--       -->
<!--history     
exports.createBrowserHistory = _createBrowserHistory3.default;
exports.createHashHistory = _createHashHistory3.default;
exports.createMemoryHistory = _createMemoryHistory3.default;
-->
import createBrowserHistory from 'history/createBrowserHistory'
//
const history = createBrowserHistory()

<Router history={history}>
 <App/>
</Router>

NativeRouter(rn 에 사용 되 는)
A for iOS and Android apps built using React Native.
여기에 strict 와 exact 가 추가 되 었 습 니 다.
strict location 이 path 보다 커 야 일치 합 니 다.eq path='/one'location='/one/a'가 일치 합 니 다.
exact location 을 사용 하면 path 와 일치 할 수 있 습 니 다.eq path='/one'location='/one'또는'/one/'가 일치 하기 때문에 약 과 같 습 니 다.
exact 와 strict location=path 를 사용 해 야 일치 합 니 다.
StaticRouter(추가 보충)
3、Switch
이것 은 v4 버 전에 서 새로 추 가 된 것 으로 주로 유일 하 게 일치 하 는 기능 을 하 는 데 쓰 인 다.여러 경로 중 하나 만 일치 하려 는 것 이다.
2.v4 버 전의 경 로 는 어떻게 설정 해 야 합 니까?
1.기본 설정(이것 은 v3 와 기본적으로 일치 하고 효과 도 기본적으로 같다)
일치<=location eq.(/b=>/+/b)(/=>/)

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div>
     <Route path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </div>
  </BrowserRouter>
2.스위치 설정 포함
일치<=location eq.(/b=>/b)(/=>/)유일 하 게 일치 합 니 다.

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <Switch>
       //   exact,     location  path='/'   。
     <Route exact path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </Switch>
  </BrowserRouter>
질문
1.공공 컴 포 넌 트 설정 방법
첫 번 째 방식

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div>
     <Route path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </div>
  </BrowserRouter>
두 번 째 방식(부자 내장)

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div >
    <Route path="/" component={aContainer} />
    <Route path="/b" component={Parent} />
    {/* {app()} */}
   </div>
  </BrowserRouter>

const Parent = ({ match }) => (
 <div>
  <Route path={`${match.url}/`} component={bContainer} />
  <Route path={`${match.url}/c`} component={cContainer} />
  <Route path={`${match.url}/d`} component={dContainer} />
 </div>
);
이런 경우 bContainer 는 공용 Component 입 니 다.
2.getComponent 를 어떻게 설정 하고 필요 에 따라 불 러 옵 니까?
별 편 
3.간단 한 표기 법 이 있 는 지 여부

npm install --save react-router-config
첫 번 째 설정 루트

const routes = [
 { component: bContainer,
  routes: [
   { path: '/',
    exact: true,
    component: bContainer
   },
   { path: '/b/b',
    component: bContainer,
    routes: [
     { path: '/b/b/b',
      component: bContainer
     }
    ]
   }
  ]
 }
]
두 번 째 설정 경로

<BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div >
     {renderRoutes(routes)}
   </div>
 </BrowserRouter>
세 번 째 단 계 는 container 의 render 에서 호출 방법 이 필요 합 니 다.

 <div>
 1111
 {renderRoutes(this.props.route.routes)}
</div>
이 장점 은 통일 적 으로 배치 할 수 있 고 약점 은 container 에서 통일 적 으로 호출 해 야 하 는 것 이다.그러나 이것 을 추출 하여 통일 적 으로 실현 하면 문제 도 크 지 않 고 문 제 를 해결 할 수 있다.
이 renderRoutes 는 실제로 한 층 의 Switch 와 여러 개의 Route 로 한 층 을 쌌 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기