๐ธ ์ํฉ ์ค์ : 1:1 ๋ฌธ์ ๋ด์ญ์ page๋ฅผ ๋๊ธธ ๋๋ง๋ค ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ณํ์ํจ๋ค
// 1:1 ๋ฌธ์๋ด์ญ ์ด ๋
useEffect(() => {
getList(page ?? 1);
},[])
async function getList(page){
...
...
history.push({
pathname: 'account/inquiry-list',
search: `page=${page}`
)}
}
account/inquiry-list/?page=1
//์ฟผ๋ฆฌ์คํธ๋ง ๊ฐ๋ง ๋ฐ์์ฌ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import qs from 'query-string';
const { page } = qs.parse(location.search, { parseNumbers: true}) as { page: number };
console.log(location.search); // ?page=1
//์ฟผ๋ฆฌ์คํธ๋ง ๊ฐ๋ง ์ถ์ถํ ์ ์๋ค
console.log(page); // 1
๐ history.location์ ๋ณํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋๋ค
ํ์ฌ ๋จธ๋ฌผ๊ณ ์๋ ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์๋ ค์ค๋ค. (ํ์ด์ง ์ด๋ํ๋ฉด์ ๊ฐ์ ์ ๋ฌ ๋ฐ์ ๋)
๐ธ ์ํฉ ์ค์ : ์ ๋ณดํฌํธ ์์ธํ ๋ณด๋ฌ๊ฐ๊ธฐ ๋ฒํผ์ด ์๋ค. ์ด ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ๊ต ํํ์ด์ง๋ก ๋์ด๊ฐ๋๋ก ํ๊ธฐ
์๋ก๊ณ ์นจ๊ฐ์ด ๊ณ ์ ๊ฐ์ด ํ์ํ ๋?
// ๋ฒํผ์ด ํฌํจ๋ ์ปดํฌ๋ํธ
function handleClick() {
....
....
if (isHana) history.push({
pathname: '/school-info'
//url์ ์ ์ ๊ฐ ๋ง์๋๋ก ์์ฑ ๊ฐ๋ฅ onUrl..๋ฑ๋ฑ
state: {url: "http://sadang.sen.es.kr"}
});
}
<LinkBtn onClick={handleClick}>์ ๋ณดํฌํธ ์์ธํ ๋ณด๋ฌ๊ฐ๊ธฐ</LinkBtn>
// schoolInfo ์ปดํฌ๋ํธ์ ์์ locatation์ ์ ๋ณด๋ฅผ ์ฝ์์ฐฝ์ ์ณ๋ณด์๋ค
{pathname: "/school-info", state: {โฆ}, search: "", hash: "", key: "2acshh"}
hash: ""
key: "2acshh"
pathname: "/school-info"
search: ""
state: {url: "http://sadang.sen.es.kr"}
...
mobile/school-info
๊ฒฐ๊ณผ ๊ฐ์ pathname = school-infouseLocation์ ์์ ์ธ๊ธํ ๊ฒ ์ฒ๋ผ ์ฟผ๋ฆฌ์คํธ๋ง ์ ๋ณด๋ฅผ ์๊ธฐ ์ข๋ค๋ฉด useParams๋ path parameter(๋์ ๋ผ์ฐํ ) ์๊ธฐ ์ข๋ค
๐ธ 1:1 ๋ฌธ์๋ด์ญ ์์ ํ ๋ seq๊ฐ์ api๋ฅผ ํตํด ๋ฐ์์ ์ผ๋ถ ๋ด์ฉ์ ๋ถ๋ฌ์์ผํ๋ค
// route ์ปดํฌ๋ํธ ์ฌ๊ธฐ์ seq๊ฐ ํจ์ฐํ๋ผ๋ฏธํฐ
<Route path="/service/inquiry/:seq?" component={Inquiry} />
// ํจ์ฐํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ๋ฌ์๋ณด์
const { seq } = useParams<TParams>();
console.log(seq) // 456 ์ด๋ฐ์์ผ๋ก ๋ถ๋ฌ์์ง
์ฐธ์กฐ