[React] router 초기 셋팅
1. router 라이브러리 다운로드
npm
npm install react-router-dom
npm install react-router
yarn
yarn add react-router-dom
yarn add react-router
2. index.js 코드 수정
이 코드에서
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
이 코드로 수정
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import {BrowserRouter} from 'react-router-dom'
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
이제 라우터를 사용할 수 있습니다.
그리고 버전 6부터 작성법이 조금 달라졌습니다.
링크
버전 확인 방법
package.json
{
"name": "reduxtest",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.6",
<!--- 버전 6.2.1 --->
"react-router": "^6.2.1",
"react-router-dom": "^6.2.1",
"react-scripts": "4.0.3",
"redux": "^4.1.2",
"redux-devtools": "^3.7.0",
"styled-components": "^5.3.3",
"web-vitals": "^1.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
변경된 부분
import {Switch} from "react-router-dom";
에서
import {Routes} from "react-router-dom";
으로 import를 해야한다고 합니다.
v6 이전버전
<Route path="/" component={Home} />
v6 이후버전
<Route path="/" element={<Home/>}/>
그리고 react-router-dom에서는 Route 선언에서도 exact를 사용할 필요가 없습니다.
결과
App.js
import {Route,Routes } from 'react-router-dom'
import Home from './routes/Home'
import Detail from './routes/Detail'
function App() {
return (
<div>
<Routes>
<Route path='/' element={<Home />} />
<Route path='/:id' element={<Detail />} />
</Routes>
</div>
);
}
export default App;
Home.jsx
const Home = () => {
return 'Home';
}
export default Home;
이제 Route 컴포넌트에 exact 속성을 넣지 않아도 합쳐서 출력되지 않는 걸 볼 수 있습니다.
Author And Source
이 문제에 관하여([React] router 초기 셋팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dltmdwls15/React-router-초기-셋팅저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)