์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Jenkins
- 500
- React
- AWS EC2
- RDS
- error
- fastapi
- MUI
- Troubleshooting
- macbook
- nodejs
- TypeScript
- js
- Express
- MongoDB
- EC2
- Github Actions
- ngrok
- python
- axios
- Java
- Spring
- github
- deploy
- springboot
- docker
- javascript
- linux
- webhook
- AWS
- Today
- Total
BEAT A SHOTGUN
[REACT] react-router ๋ฅผ ์ด์ฉํ ๋ component ๋ก props data๋ณด๋ด์ฃผ๋ ๋ฐฉ๋ฒ ๋ณธ๋ฌธ
[REACT] react-router ๋ฅผ ์ด์ฉํ ๋ component ๋ก props data๋ณด๋ด์ฃผ๋ ๋ฐฉ๋ฒ
thovy 2022. 9. 13. 23:34๐ก ์ํฉ
App.js
์ react-router-dom
์ ์ฌ์ฉํด ํ์ด์ง๋ฅผ ์ด๋์ํค๊ณ ์๋ค.
๊ทธ๋ฐ๋ฐ post
(๊ฒ์๊ธ) ์๋ ๋ฒํธ๊ฐ ๋ถ์ฌ๋๊ณ , postDetail
์๋ ํด๋น ๊ฒ์๊ธ๋ง ๋ณด์ฌ์ผ ํ๋ค.
App.js
๊ทธ๋์ App.js
์์ route ํ๋ฉด์
// App.js
<Route path='/post/:id' element={<PostDetail />} />
์ด๋ ๊ฒ ํด์ ํด๋น ๊ฒ์๊ธ๋ก ์ด๋ํ๋๋ก ํ๋ค.
Posts.jsx
posts
์ปดํฌ๋ํธ์์๋ ๋ํ๋ ๊ฒ์๊ธ์ ํด๋ฆญํ์ ๋ props
๋ก postId
๋ฅผ ๋ฐ๋๋กํ๋ค.
// Posts.jsx
function handlePostDetail(props){
navigate(`/post/${props}`)
}
PostDetail.jsx
๊ทธ๋ฐ๋ฐ postDetail
์์๋ props
๋ฅผ ์ด๋ป๊ฒ ๋ฐ์์ผ ํ๋์ง ๋ชจ๋ฅด๋ ๋งค์ฐ๋งค์ฐ ์ฌ๊ฐํ ์ํฉ์ด ์๊น.
ํด๋ฆญ๋ ๊ฒ์๊ธ์ธ postDetail
ํ์ด์ง๊ฐ rendering ๋๋ฉด์ useEffect
๊ฐ axios.get()
์ ์ฌ์ฉํด ๊ฒ์๊ธ์ ๊ฐ์ ธ์ฌ ๋ ์ฃผ์์ ํด๋น ๊ฒ์๊ธ์ id๊ฐ ์
๋ ฅ๋์ด์ผํ๋๋ฐ... ๊ทธ๋์ผ ํด๋น ๊ฒ์๊ธ์ ๊ฐ์ ธ์ฌ ์ ์๋๋ฐ...
Link
๋ฅผ ์ฌ์ฉํด๋ ์ ๋๊ณ , ๋ญ ์ด๋ป๊ฒ component
์ state ๋ฅผ ์คฌ๋์ง ๋ค๋ค ์๋๋๋ฐ ๋๋ง ์๋จ.
๐ ํด๊ฒฐโ
useLocation
์ ์ฌ์ฉํ๋ค.
App.js ๋ ๊ทธ๋๋ก ๋๊ณ
Posts.jsx
์ navigate
์ state
๋ฅผ ์ด์ฉํด data
๋ฅผ ๋๊ฒจ์ค๋ค.
// Posts.jsx
function handlePostDetail(props){
navigate(`/post/${props}`, {
state:{
postId:props
}
})
}
PostDetail.jsx
๊ทธ๋ฆฌ๊ณ postDetail
์์๋ useLocation
์ ํ์ฉํด navigate
๊ฐ ๋ณด๋ธ state
๋ฅผ ๊ฐ์ ธ์จ๋ค.
// PostDetail.jsx
const postProps = useLocation()
...
useEffect(()=>{
axios.get(`/post/${postsProps.state.postId}`)
.then
...
๋ฐ๋~!
์ฝ์ฃ ?
๋ฒ์ธ
์ด๋ ๊ฒ ๋๋ฉด useLocation
์ ์ด์ฉํด ๊ฐ์ ธ์จ data
๋ฅผ ๊ฐ์ง๊ณ ๋๊ธ
์ ๋ถ๋ฌ์ฌ ๋๋ ํจ์ฌ ์ฌ์์ง๋ค.
ํด๋น ๋๊ธ์ ๊ฐ์ ธ์ฌ ๋, PostDetail
์์๋ Reply component
๋ฅผ ๊ฐ์ ธ์ฌ ํ
๋ฐ,
// PostDetail.jsx
...
<Reply postId={postProps.state.postId}/>
...
๊ทธ ๋ Reply component
์ ์ ๋ฐ์์ผ๋ก props
๋ฅผ ๋๊ฒจ์ฃผ๋ฉด reply
๋ props
ํํ๋ก ๋ฐ์ ์ ์๋ค. ๊ทธ ๋ค๋ ์์ฃผ ์ฝ๋ค.
๋
๋๋ useLocation
์ ๋ชฐ๋ผ์ 3์๊ฐ์ ํผ์...