โ ๏ธ ์ ๋ฆฌํ ๋ด์ฉ์ ์คํ๋ ์๋ชป๋ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค. ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
- JSX
- useState
- ์ด๋ฒคํธ ํธ๋ค๋ง
- ref
- useEffect
- useRef
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ์ด๋ฉฐ XML๊ณผ ๋น์ทํ๊ฒ ์๊ฒผ๋ค. ์ด๋ฐ ํ์์ผ๋ก ์์ฑํ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๊ธฐ ์ ์ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค.
function App() {
return (
<div>
Hello <b>react</b>
</div>
)
}
์์ฒ๋ผ ์์ฑํ ์ฝ๋๋ ์๋์ ๊ฐ์ด ๋ณํ๋๋ค.
function App(){
return React.createElement('div', null, 'Hello ', React.createElement('b', null, 'react'));
}
useState ํจ์์ ์ธ์์๋ ์ํ์ ์ด๊น๊ฐ์ ๋ฃ์ด์ค๋ค.
ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ฐฐ์ด์ด ๋ฐํ๋๊ณ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ ํ์ฌ ์ํ์ด๊ณ , ๋ ๋ฒ์งธ ์์๋ ์ํ๋ฅผ ๋ฐ๊พธ์ด ์ฃผ๋ ํจ์์ด๋ค.
DOM์ ๊ผญ ์ง์ ์ ์ผ๋ก ๊ฑด๋๋ ค์ผ ํ ๋ ์ฌ์ฉํ๋ค.
<input ref={(ref) => {this.input = ref} />
this.input
์ input ์์์ DOM์ ๊ฐ๋ฆฌํจ๋ค.
๋ฆฌ์กํธ ๋ด์ฅ createRef๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํจ.
input = React.createRef()
<input ref={this.input} />
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง๋ค ํน์ ์์ ์ ์ํํ๋๋ก ์ค์ ํ ์ ์๋ Hook์ด๋ค.
ํจ์์ ๋ ๋ฒ์ฌ ํ๋ผ๋ฏธํฐ๋ก ๋น์ด ์๋ ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
useEffect(() => {
console.log('๋ง์ดํธ๋ ๋๋ง ์คํ')
}, [])
๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋๋ ๋ฐฐ์ด ์์ ๊ฒ์ฌํ๊ณ ์ถ์ ๊ฐ์ ๋ฃ์ด์ค๋ค.
useEffect(() => {
console.log('name ๊ฐ์ด ์
๋ฐ์ดํธ๋ ๋๋ง ์คํ')
}, [name])
์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๊ธฐ ์ ์ด๋ ์
๋ฐ์ดํธ๋๊ธฐ ์ง์ ์ ์ด๋ ํ ์์
์ ์ํํ๊ณ ์ถ๋ค๋ฉด return์ ์ฌ์ฉํ๋ฉด ๋๋ค.
useEffect ๋ด๋ถ์ return์ ํด๋น ์ปดํฌ๋ํธ๊ฐ ์ ๊ฑฐ๋ ๋ ์คํ๋ฉ๋๋ค.
useRef Hookdms ํจ์ ์ปดํฌ๋ํธ์์ ref๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค.
useRef๋ฅผ ์ฌ์ฉํ์ฌ ref๋ฅผ ์ค์ ํ๋ฉด useRef๋ฅผ ํตํด ๋ง๋ ๊ฐ์ฒด ์์ current ๊ฐ์ด ์ค์ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
import { useRef } from 'react';
function App() {
const inputRef = useRef();
return (
<div>
<input ref={inputRef} />
<button onClick={() => inputRef.current.focus()}>
Focus
</button>
</div>
)
}
const FancyButton = React.forwardRef((props, ref) => (
<button ref={ref} className="FancyButton">
{props.children}
</button>
));
// ์ด์ DOM ๋ฒํผ์ผ๋ก ref๋ฅผ ์์ ๋ฐ์ ์ ์์ต๋๋ค.
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;
css, vue๋ฅผ ๋๋ด๊ณ React๋ก ๋ค์ TIL์ ์์ํ์๋ค. ๊พธ์คํ ํ๋ ค ํ์ง๋ง ๋งค์ผ ์์ฑํ๋ ๊ฒ์ด ์ฝ์ง ์์์ ๋ค์ ๊นจ๋ซ๊ฒ ๋์๋ค. ๋ค์ ์ด์ฌํ ์จ๋ณด์!๐
react๋ก ๋ถ๋ช ํ๋ก์ ํธ๋ฅผ ํ๋๋ฐ ์์ด๋ฆฌ ๋ฏ์ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ฑ ์ผ๋ก ๊ฐ์ ๋ค์ ๋ด์ฉ์ ๋ค์ ํ๋ํ๋๋ฅผ ๋ค์ ์ดํด๋ณด๋๊น ์ด๋ฐ๊ฑฐ์๊ตฌ๋ ์ถ์๋ค. ์ด์ ๋ฆฌ์กํธ ์์์ด๋๊น ๊พธ์คํ ๋ฌ๋ ค๋ณด์!
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฐ๋ธ์ฝ์ค
- ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์-forwarding-refs
- ๊น๋ฏผ์ค ์ , โ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ (๊ฐ์ ํ)โ, ๊ธธ๋ฒ