
์ด๋ฒ์ ๋ชฉ๋ก ํ์ด์ง -> ์์ธํ์ด์ง๋ฅผ ๊ตฌ์ฑํ ๋
๋ฐฑ์๋์์ getํ ์ ๋ณด๊ฐ [object%20Object]๊ฐ ์๊พธ ๋ ์ ใ
ใ
(ํด๊ฒฐ ๋ชปํจ..)
useLocation์ด๋ผ๋ hooks์ ์ฌ์ฉํด์ ์ ๋ณด๋ค์ ๋ฐ์์๋ค.
useLocation : '์ฌ์ฉ์๊ฐ ํ์ฌ ๋จธ๋ฌผ๋ฌ์๋ ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ hooks'
๐ค Link to = {} state{}
GoalList.js
<Link
to={ROUTE_PATH_GOAL_DETAIL}
style={{ textDecoration: 'none', color: '#b1b2ff' }}
state={{ data: item, goalId: item.id }}
>
state ๋ผ๋ key๊ฐ์ ๋ํ value๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ์ฝ๋
GoalDetail.js
import { useLocation } from 'react-router-dom';
...
const location = useLocation();
๊ทธ๋ฆฌ๊ณ ์ด์ ๋ถ๋ฌ ์ค๊ณ ์ถ์ ํ์ด์ง์์,
๋ณ์์ useLocation ์ ๋ณด๋ฅผ ๋ด๋๋ค.
(๋ผ์ฐํฐ ๋ ์ค์น ํ์!)
์ฝ์์ ์ฐ์ด๋ณด๋ฉด??
console.log(location)

pathname : ์ฟผ๋ฆฌ์คํธ๋ง์ ์ ์ธํ /goalDetail ์ถ๋ ฅ
search : pathname์ด ์ถ๋ ฅํ๋ ๋ถ๋ถ์ ์ ์ธํ ์ฟผ๋ฆฌ์คํธ๋ง ์ถ๋ ฅ. ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ถ์ํด์ผ ํ๋ ์ํฉ์์ ์ ์ฉ
state : ์ฐ๋ฆฌ๊ฐ ๊ถ๊ทน์ ์ผ๋ก ์ด์ฉํ ๋ฐ์ดํฐ๋ค์ด ๊ฐ์ฒด๋ก ๋ค์ด์์์
๋ฐ๋ผ์ location.state๋ก ์ ๊ทผํ์ฌ ์ํ๋ ์ ๋ณด๋ฅผ ๋์ด๋ค ์ธ ์ ์๋ค.
const detailData = location.state.data;
...
<Title>๋ชฉํ ๊ธ์ก(์)</Title>
<TextField
className="textField"
id="standard-read-only-input"
defaultValue={detailData.price
.toString()
.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}
InputProps={{
readOnly: true,
}}
variant="standard"
/>

โ useNavigate() ์ด์ฉํ๊ธฐ
navigate( '/์ด๋๊ฒฝ๋ก', { state: { ํค: ๊ฐ, ํค: ๊ฐ, ... } } )
navigate() ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์์ ์ด๋ํ ๊ฒฝ๋ก,
๋๋ฒ์งธ ์ธ์์ state ์์ฑ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ค๋ค.
import { useNavigate } from 'react-router-dom';
...
const navigate = useNavigate();
const move = () => {
// ๋๋ฒ์ฌ ์ธ์์ state ์์ฑ์ ์ํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ค๋ค.
navigate('/goalDetail', {
state: {
id: id,
goalName: '๊ฐ์'
}
});
}
๊ทธ ํ ๋ค์ useLocation์ ์ฌ์ฉํ์ฌ state์ ๋ด๊ธด ๋ฐ์ดํฐ๋ค์ ์ํ๋ ํ์ด์ง์ ์ ์ฉํด์ ์ฐ๋ฉด ๋จ!
'TIL > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] React ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ธฐ๋ณธ (2) | 2023.11.05 |
---|---|
[TIL] useRef (0) | 2023.05.19 |
[TIL] default props (0) | 2023.05.19 |
[TIL] useReducer (0) | 2023.05.19 |