728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ warnig ํด๊ฒฐํ๊ธฐ
๐ค <a> cannot appear as a descendant of <a>
- ์ง๋ ๋ฒ Router ์์ ์ด ์ง๋ ํ๋ถํฐ ์์ ๊ฐ์ด "a ํ๊ทธ ์์ a ํ๊ทธ๋ฅผ ๋ฃ์ผ๋ฉด ์๋ฉ๋๋ค." ๋ผ๋ ๋ด์ฉ์ warning ์ด ๋จ๊ธฐ ์์ํ๋ค.
<Nav.Link><Link to="/">Home</Link></Nav.Link>
- ์๊ณ ๋ณด๋ Bootstrap ์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๋ถ๋ถ์ธ <Nav.Link></Nav.Link> ํ๊ทธ ์์ <Link></Link> ํ๊ทธ๋ฅผ ๋ฃ์ ๊ฒ ๋ฌธ์ ์๋ค.
- ์ด ๋ ๊ฐ์ ํ๊ทธ๋ ๋ชจ๋ <a> ํ๊ทธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งํฌ ๊ธฐ๋ฅ์ด ์๋ ํ๊ทธ์ฌ์ ์์ ๊ฐ์ warning ์ด ๋ด๋ ๊ฒ์ด๋ค.
<Nav.Link as={Link} to='/'>Home</Nav.Link>
- ๊ทธ๋์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํด์ฃผ์๋ค.
- as ๋ผ๋ ์์ฑ์ React Bootstrap ๋ฌธ๋ฒ์ธ๋ฐ ๊ทธ๋ฅ ๊ธฐ๋ณธ <a> ํ๊ทธ ๋์ ์ฌ์ฉํ html ํ๊ทธ ํน์ Component ๋ฅผ ์ง์ด๋ฃ์ ์ ์๋ค.
- ๋ฐ๋ผ์ <Link> ํ๊ทธ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
- ์ด์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ํ์ธํ์ ๋, ๊ธฐ์กด์ ๋จ๋ warning ์ด ๋์ด์ ๋จ์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๐ Component ์ Lifecycle ๊ณผ Hook ์ดํด๋ณด๊ธฐ
๐ค Lifecycle ์ดํด๋ณด๊ธฐ
- Component ์๋ Lifecycle ์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Component ๋ ์์ฑ์ด ๋ ์๋, ์ญ์ ๊ฐ ๋ ์๋, ๊ด๋ จ๋ state ์ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ์ฌ๋ ๋๋ง์ด ๋ ์๋ ์๋ค.
๐ค Hook ์ดํด๋ณด๊ธฐ
- ํน์ Component ์ Lifecycle ์ค๊ฐ์ค๊ฐ์ ์ด๋ค ๊ธฐ๋ฅ์ ๋ฃ๊ณ ์ถ์ ๋๊ฐ ์๋๋ฐ, ์ด๋ฐ ์ญํ ์ ํ๋ ๊ฒ์ ๊ฐ๊ณ ๋ฆฌ์ฒ๋ผ ๊ทธ ์์ ์ ๋ธ๋ ์ดํฌ๋ฅผ ๊ฑด๋ค๊ณ ํ์ฌ ๊ฐ๊ณ ๋ฆฌ๋ผ๋ ์๋ฏธ์ Hook ์ด๋ผ๊ณ ํ๋ค.
- ๊ทธ๋์ Component ์์ฑ ์ ์ ์ด๋ค ๊ธฐ๋ฅ์ ์คํํด๋ฌ๋ผ๋ ์ง, Component ๊ฐ ์ญ์ ๋๊ธฐ ์ ์ ์ด๋ค ๊ธฐ๋ฅ์ ์คํํด๋ฌ๋ผ๋ ์ง ๋ฑ๋ฑ์ ์ฝ๋๋ฅผ Hook ์ด๋ผ๋ ๊ฒ์ ํตํด ํ ์ ์๋ค.
- Hook ์ ์ ํํ ๋ช ์นญ์ Lifecycle Hook ์ด๋ค.
๐ Lifecycle Hook ์์๋ณด๊ธฐ
- Hook ๋ค์ ์๋ class ๋ก ๋ง๋ Component ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
class Detail2 extends React.Component {
componentDidMount(){
// Detail2 Component ๊ฐ Mount(์์ฑ) ๋๊ณ ๋์ ์คํํ ์ฝ๋
}
componentWillUnmount(){
// Detail2 Component ๊ฐ Unmount(์ญ์ ) ๋๊ธฐ ์ ์ ์คํํ ์ฝ๋
}
}
- ๊ฐ์ฅ ์ ์ฉํ Hook ์ 2๊ฐ ๊ผฝ์ผ๋ผ๋ฉด ์์ ์์ฑํ 2๊ฐ์ ์ฝ๋์ด๋ค.
- componentDidMount() ์๋ Component ๊ฐ ์ฒ์์ผ๋ก ์์ฑ๋ ํ ์คํํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
- componentWillUnmount() ์๋ Component ๊ฐ ์ฌ๋ผ์ง๊ธฐ ์ ์ ์คํํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
๐ useEffect Hook ์์๋ณด๊ธฐ
- ์์ฆ React ๊ฐ๋ฐ์์๋ ๋ ์งง๊ณ ์ฝ๋ค๋ ์ฅ์ ๋๋ฌธ์ useEffect ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
import React, {useState, useEffect} from 'react';
function Detail(){
useEffect(()=>{
// ์ฌ๊ธฐ์ ์ฝ๋ ์์ฑ
});
return (
// HTML ํ๊ทธ๋ค ์์ฑํ๋ ์์น
)
}
- ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ ๊ฐ์ด function Component ์์์ return ์ด ๋์ค๊ธฐ ์ ์ useEffect() ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋๋ฐ ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์ด์ง ์๋จ์ ๋ฏธ๋ฆฌ useEffect ๋ฅผ import ํ๋ค.
- useEffect() ๋ฅผ ์ฌ์ฉํ๋ค.
- useEffect() ์์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฃ๋๋ค.
- ์ฝ๋ฐฑํจ์ ์์ Detail Component ๊ฐ ์์ฑ๋ ํ์ ์คํํ๊ณ ์ถ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- useEffect() ๋ด์ ์ฝ๋ ์คํ ์กฐ๊ฑด์ ์์ธํ๊ฒ ๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- Component ์ mount ๊ฐ ๋๋ฌ์ ๋ (Component ๊ฐ ์์ฑ๋ ํ ๋ก๋ฉ๊น์ง ๋๋ฌ์ ๋)
- Component ๊ฐ update ๋๊ณ ๋ ํ์ (Component ๊ฐ ์ฌ๋ ๋๋ง ๋๊ณ ๋ ํ์)
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React ์์ Ajax ์์ฒญํ๊ธฐ (0) | 2022.03.26 |
---|---|
[React] useEffect ๊ณผ์ ํ๊ธฐ (0) | 2022.03.26 |
[React] CSS ๋์ SASS ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.03.25 |
[React] styled-components ๋ก CSS ์คํ์ผ๋งํ๊ธฐ (0) | 2022.03.25 |
[React] React Router 3 : URL ํ๋ผ๋ฏธํฐ๋ก ์์ธ ํ์ด์ง 100๊ฐ ๋ง๋ค๊ธฐ (0) | 2022.03.24 |