SONSU 앱 개발에 들어가기 전에 웹 개발을 먼저 대부분 구현한 후 앱으로 넘어가기로 했다.
사전에 두개 페이지의 간단한 구성(버튼의 배열)은 마친 상태이고 오늘은 라우터를 이용한 두 페이지간 이동을 구현해볼 예정이다. 자료는 공식 홈페이지를 참고하였다.
$ npm install react-router-dom
function App() {
return (
<div className="App">
<BrowserRouter>
<Routes>
<Route path="/" element={<TestHome />} />
<Route path="test" element={<Test />} />
</Routes>
</BrowserRouter>
</div>
);
}
<Link to="/test">
<Button
color="secondary"
variant="contained">
초급
</Button>
</Link>
버튼에 따라 같은 페이지에서 우측 상단의 초,중,고급 텍스트만 변화되기를 원했다. 따라서 Button을 감쌌던 Link에서 state값을 넘겨주기로 했다.
Link는 다음과 같은 속성들을 지정하여 넘겨줄 수 있다.
to(pathname): 넘어가고 싶은 url 경로
search: 쿼리 매개 변수의 문자열 표현
hash: url에 넣을 해시
state: location을 유지할 state 값
아래 코드에서는 to, state 두가지 속성을 지정하였다.
<Link to={"/test"}
state={{grade : 'cho'}}>
<Button
color="secondary"
variant="contained">
초급
</Button>
</Link>
<p>a</p>
를 보여주고 b라면 <p>b</p>
를 보여주는 형태이다.function Component() {
let 변수 = "";
return (
<div>
{
{
a : <p>a</p>,
b : <p>b</p>,
c : <p>c</p>
}[변수]
}
</div>
)
}
function Component() {
var 변수 = '';
if (변수 === 'a'){
return <p>a</p>
} else if (변수 === 'b'){
return <p>b</p>
} else {
return <p>c</p>
}
}
<Routes path="/" element={<TestMain />}>
<Route path="test" element={<Test />} />
</Routes>
<Routes>
<Route path="/" element={<TestHome />} />
<Route path="test" element={<Test />} />
</Routes>
<Link to= {{
pathname: '/test',
state: {grade : 'cho'}
}}>
<Link to={"/test"}
state={{grade : 'cho'}}>
참고
https://reactrouter.com/
https://velog.io/@devstone/react-router-dom-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0#0-react-rounter-dom%EC%9D%B4-%EB%AD%94%EA%B0%80%EC%9A%94
https://velog.io/@kcdoggo/Switch-is-not-exported-from-react-router-dom-%EC%97%90%EB%9F%AC
https://velog.io/@jungyh0528/React-Router-%EC%82%AC%EC%9A%A9-%EB%B0%8F-State-%EC%A0%84%EC%86%A1-%EC%A0%95%EB%A6%AC
https://codingapple.com/unit/react-if-else-patterns-enum-switch-case/
https://good-potato.tistory.com/entry/React-button%EC%9C%BC%EB%A1%9C-state-%EA%B0%92-%EC%9E%90%EC%8B%9D-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EB%A1%9C-%EB%84%98%EA%B2%A8%EC%A3%BC%EA%B8%B0
https://stackoverflow.com/questions/67061088/can-not-pass-state-with-react-router-dom-v6-beta-state-is-null