react
No routes matched location "/" 에러 해결 방법, error ,react-router-dom
YG - 96년생 , 강아지 있음, 개발자 희망
2022. 2. 25. 12:53
문제 코드
return (
<BrowserRouter>
{isLoggedIn && <Navigation userObj={userObj} />}
<Routes>
{isLoggedIn && (
<>
<Route path={HOME_URL} element={<Home userObj={userObj} />} />
<Route
path={PROFILE_URL}
element={<Profile refreshUser={refreshUser} userObj={userObj} />}
/>
<Route path={TODOS_URL} element={<ToDos userObj={userObj} />} />
</>
)}
</Routes>
</BrowserRouter>
);
}
문제 원인
react가 렌더되면서 isLoggedIn 일때가 아닌 !isLoggedIn이 먼저 렌더 되고 그 이후에 isLoggedIn 이 조건이 충족되기 때문에 맨 처음 페이지 렌더 시 이러한 에러 문구가 뜨는 것 같다.
해결 방법 / 코드
조건문에 해당하지 않는 부분을 먼저 리턴해주고 그 뒤에 조건에 해당하는 부분들을 리턴해주면 오류문구가 뜨지 않고 해결이 됩니다.
if (!isLoggedIn) {
return (
<BrowserRouter>
<Routes>
<Route path={HOME_URL} element={<Auth />} />
</Routes>
</BrowserRouter>
);
}
return (
<BrowserRouter>
<Navigation userObj={userObj} />
<Routes>
<Route path={HOME_URL} element={<Home userObj={userObj} />} />
<Route
path={PROFILE_URL}
element={<Profile refreshUser={refreshUser} userObj={userObj} />}
/>
<Route path={TODOS_URL} element={<ToDos userObj={userObj} />} />
</Routes>
</BrowserRouter>
);
}