React Router4.0
BrowserRouter 가 만 든 URL 형식 은 다음 과 같 습 니 다.http://react.com/some/pathHashRouter만 든 URL 형식 은 다음 과 같 습 니 다.http://react.com/#/some/path
BrowserRouter 를 사용 할 때 서버 가 가능 한 모든 URL 을 정확하게 처리 할 수 있 도록 서버 를 설정 해 야 합 니 다.예 를 들 어 브 라 우 저 에서 보 낼 때.http://react.com/some/path 화해시키다http://react.com/some/path2두...서버 는 정확 한 HTML 페이지(즉,단일 페이지 응용 에서 유일한 html 페이지)로 돌아 갈 수 있 습 니 다.HashRouter 를 사용 하면 이 문제 가 존재 하지 않 습 니 다.hash 부분의 내용 은 서버 에서 자동 으로 무시 되 기 때문에 정말 효과 적 인 것 은 hash 앞의 부분 이 고 단일 페이지 응용 에 있어 서 이 부분 은 고정 적 입 니 다.
경로 설정
1.path
(1)BrowserRouter 를 사용 할 때 path 는 이 Route 가 일치 하 는 URL 을 설명 하 는 pathname(2)HashRouter 를 사용 할 때 path 는 이 Route 가 일치 하 는 URL 의 hash 를 설명 합 니 다.
2.match
(1)params:Route 의 path 는 매개 변 수 를 포함 할 수 있 습 니 다.예 를 들 어 매개 변수 id 를 포함 합 니 다.params 는 일치 하 는 URL 에서 path 의 인 자 를 분석 하 는 데 사 용 됩 니 다.예 를 들 어 URL="http://react.com/foo/1시,params={id:1}.(2)isExact:URL 이 완전히 일치 할 때 값 은 true 입 니 다.URL 부분 이 일치 할 때 값 은 false 입 니 다.예 를 들 어 path="/foo",URL="http://react.com/foo"시,완전히 일치 합 니 다."URL="http://react.com/foo/1부분 일치 합 니 다.(3)path:Route 의 path 속성,내장 경로 구축 시 사용 합 니 다.(4)url:URL 의 일치 부분.
3.Route 렌 더 링 구성 요소 의 방식
(1)component component 의 값 은 하나의 구성 요소 입 니 다.URL 이 Route 와 일치 하면 component 속성 이 정의 하 는 구성 요소 가 렌 더 링 됩 니 다.URL="http://react.com/foo"foo 구성 요소 가 렌 더 링 됩 니 다.(2)renderrender 의 값 은 함수 입 니 다.이 함 수 는 React 요 소 를 되 돌려 줍 니 다.이 함 수 는 React 요 소 를 되 돌려 줍 니 다.이런 방식 은 렌 더 링 을 기다 리 는 구성 요소 에 추가 속성 을 편리 하 게 전달 할 수 있다.예:(
)}>Foo 구성 요소 가 추가 data 속성 을 받 았 습 니 다.(3)children 의 값 도 함수 입 니 다.함 수 는 렌 더 링 할 React 요 소 를 되 돌려 줍 니 다.이전 두 가지 방식 과 달리 성공 여부 와 상 관 없 이 children 이 돌아 오 는 구성 요 소 는 렌 더 링 됩 니 다.그러나 일치 하지 않 을 때 match 속성 은 null 입 니 다.예:(
)}/>Route 가 현재 URL 과 일치 하면 렌 더 링 요소 의 루트 div class 를 active 로 설정 합 니 다.
4.Switch 와 exact 는 URL 이 여러 루트 와 일치 할 때 이 루트 들 은 렌 더 링 작업 을 수행 합 니 다.첫 번 째 일치 하 는 Router 만 렌 더 링 하려 면 이 Route 를 Switch 구성 요소 에 패키지 할 수 있 습 니 다.URL 이 Route 와 완전히 일치 하려 면 Route 가 렌 더 링 되 어야 Route 의 exact 속성 을 사용 할 수 있 습 니 다.Switch 와 exact 는 항상 공동으로 사용 되 며,첫 페이지 의 내 비게 이 션 을 사용 합 니 다.예 를 들 면:
Switch 를 사용 하지 않 으 면 URL 의 pathname 이"/posts"일 때 와 일치 합 니 다.exact 를 사용 하지 않 으 면'/'/posts','/user 1'등 거의 모든 URL 이 첫 번 째 Route 와 일치 하고 스위치 가 존재 하기 때문에 뒤의 두 Route 는 영원히 일치 하지 않 습 니 다.URL 의 pathname 이"/"일 때 만 첫 번 째 Route 가 일치 하도록 exact 를 사용 합 니 다.
5.내장 경로
내장 경로 란 Route 렌 더 링 구성 요소 내부 에서 새로운 Route 를 정의 하 는 것 을 말 합 니 다.예 를 들 어 const Posts=({match})=>{
return(
{/* match.url /posts*/}
)
}URL 의 pathname 이"/posts/react"일 때 PostDetail 구성 요소 가 렌 더 링 됩 니 다.URL 의 pathname 이"/posts"일 때 PostList 구성 요소 가 렌 더 링 됩 니 다.Route 의 내장 사용 은 응용 이 더욱 유연 하 게 경 로 를 사용 할 수 있 도록 합 니 다.
6.링크
Link 는 React Router 가 제공 하 는 링크 구성 요소 입 니 다.링크 구성 요 소 는 이 링크 를 클릭 할 때 페이지 의 경로 가 어떻게 되 어야 하 는 지 정의 합 니 다.예 를 들 어 const Navigation=()=>()
)Link 는 to 속성 설명 을 사용 하여 URL 주소 로 탐색 합 니 다.to 는 string 또는 object 형식 일 수 있 습 니 다.object 형식 일 때 pathname,search,hash,state,네 가지 속성 을 포함 할 수 있 습 니 다.예 를 들 어:
pathname:'/posts',
search:'?sort=name',
hash:'#the-hash",
state:{formHome:true}
}/>Link 를 사용 하 는 것 외 에 도 history 대상 을 사용 하여 수 동 으로 내 비게 이 션 을 할 수 있 습 니 다.history 에서 가장 자주 사용 하 는 방법 은 push(path,[state])와 replace(path,[state])입 니 다.push 는 브 라 우 저 기록 에 기록 을 추가 합 니 다.replace 는 이전 기록 으로 바 꿉 니 다.예 를 들 어:
history.push('/posts')history.replace('/posts')
import React from "react";import { BrowserRouter as Router, Route, Link } from "react-router-dom";
function BasicExample() { return (
-
Home
-
About
-
Topics
);}
function Home() { return (
Home
);}
function About() { return (
About
);}
function Topics({ match }) { return (
Topics
-
Rendering with React
-
Components
-
Props v. State
Please select a topic.
}
/>
);}
function Topic({ match }) { return (
{match.params.topicId}
);}
export default BasicExample;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
react.dom.development.js:29345 포착되지 않은 오류: createRoot(...): 대상 컨테이너가 DOM 요소가 아닙니다.App.js index.js '반응'에서 반응 가져오기; 'react-dom/client'에서 ReactDOM 가져오기; './App'에서 앱 가져오기; ReactDOM.createRoot(, document.get...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.