React Router 재로드 페이지를 찾을 수 없는 것과 관련된 주요 문제는 사용자가 페이지를 새로 고칠 때 브라우저가 현재 URL에 대해 서버에 요청을 시도한다는 것입니다. 그러나 React Router는 클라이언트 측 라우팅이므로 URL에 해당하는 서버 경로가 없으므로 404 Not Found 오류가 반환됩니다. 이는 사용자가 새로고침 시 특정 콘텐츠가 나타나기를 기대하는 경우 특히 문제가 될 수 있습니다.
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; const App = () => ( <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> {/* Page Not Found */} <Route render={() => (<h1>Page not found</h1>)} /> </Switch> </Router> );
// 1행: 이 행은 react-router-dom 라이브러리에서 BrowserRouter, Route 및 Switch 컴포넌트를 가져옵니다.
// 3행: 이 행은 JSX 코드를 반환하는 App이라는 함수를 정의합니다.
// Line 5: 이 라인은 react-router-dom의 Router 구성 요소에서 전체 JSX 코드를 래핑합니다.
// 6행: 이 행은 react-router-dom에서 Switch 구성 요소의 모든 경로를 래핑합니다.
// Lines 7 – 9: 이 라인은 '/' 및 '/about'에 대한 두 개의 경로를 각각 해당 구성 요소(Home 및 About)와 함께 정의합니다.
// Lines 11 – 12: 이 라인은 일치하는 다른 경로가 없을 때 "페이지를 찾을 수 없음"이라는 h1 태그를 렌더링하는 경로를 정의합니다.
페이지를 찾을 수 없음 오류
React Router에서 페이지를 찾을 수 없음 오류는 사용자가 존재하지 않는 페이지나 경로에 접근하려고 할 때 발생하는 오류입니다. 이는 사용자가 URL을 잘못 입력했거나 액세스하려는 페이지가 제거 또는 이동된 경우에 발생할 수 있습니다. React Router에서 이 오류는 다음을 사용하여 처리됩니다.
반응 라우터에서 페이지를 찾을 수 없는 경우 어떻게 처리합니까?
React Router를 사용할 때 URL이 기존 경로와 일치하지 않을 때 NotFound 구성 요소를 렌더링하는 사용자 정의 경로를 생성하여 찾을 수 없는 페이지를 처리할 수 있습니다. 이렇게 하려면 경로가 "*"로 설정된 새 경로를 만들고 NotFound 구성 요소를 렌더링해야 합니다.
예 :
이는 기존 경로와 아직 일치하지 않은 모든 URL과 일치하고 NotFound 구성 요소를 렌더링합니다.
반응하는 페이지를 강제로 다시 로드하는 방법
React Router에서는 히스토리 객체의 교체 방법을 사용하여 페이지를 강제로 다시 로드할 수 있습니다. 이렇게 하면 기록 스택의 현재 항목이 새 항목으로 대체되어 페이지를 강제로 다시 로드합니다. 이 방법을 사용하려면 먼저 기록 개체에 대한 액세스 권한을 얻어야 합니다. 라우터 구성 요소를 만들 때 소품으로 전달하여 이를 수행할 수 있습니다.
const AppRouter = () => (
{/* 귀하의 경로는 여기 */}
);
히스토리 객체에 액세스할 수 있으면 다음과 같이 교체 방법을 사용할 수 있습니다.
history.replace('/some-route');