๋ฐ์ํ
๐ ๋ชฉ์ฐจ
- Introduction
- useRef
- Conclusion
๐ Introduction
์๋ ํ์ธ์. ์ด๋ฒ ์๊ฐ์์๋ useRef๋ฅผ ๋ณ์๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ document.querySelector์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ react useRef๋ฅผ ๋ง๋๋ณผ๊ฒ์.
๐ useRef
import React, { useState, useRef } from "react";
function InputSample() {
const [inputs, setInputs] = useState({
name: "",
nickname: "",
});
const nameInput = useRef();
const { name, nickname } = inputs;
const onChange = (e) => {
const { name, value } = e.target;
// ๊ฐ์ฒด ์ํ๋ฅผ ์
ํ
์ดํธ ํ ๋๋ ๋ถ๋ณ์ฑ์ ์ง์ผ์ค์ผ ํฉ๋๋ค.
setInputs({
...inputs,
[name]: value,
});
};
const initText = () => {
setInputs({
name: "",
nickname: "",
});
// ์ด๋ ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ด์.
nameInput.current.focus();
};
return (
<div>
<input
name="name"
placeholder="name"
onChange={onChange}
value={name}
// โญ๏ธ์ฌ๊ธฐ์์ ์ง์ ์ ํด์ค ์ ์์ต๋๋ค.
ref={nameInput}
/>
<input
name="nickname"
placeholder="nickname"
onChange={onChange}
value={nickname}
/>
<button onClick={initText}>init</button>
<div>
<b>value: </b>
{name} ({nickname})
</div>
</div>
);
}
export default InputSample;
๐ Conclusion
vue์๋ ๋์ผํ ref๋ผ๋ ๊ธฐ๋ฅ์ด ์์ง์. ํ์ง๋ง ์ด๋ฒ๋งํผ์ react๊ฐ ์ข๋ ๊ฐ๋ ์ฑ์ด ๋๋ค๊ณ ํด์ผํ ๊น์. ์ข๋ ํธํ๊ฑฐ ๊ฐ์ต๋๋ค. vue ๊ฒฝ์ฐ this.$refs๋ก ๊ฐ์ ธ์ค๊ฒ ๋๋๋ฐ ์ด๊ฒ ์๊ทผํ ๊ท์ฐฎ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๊ตฌ์.ํ์ง๋ง ์ง์ ๋ณ์์ ๋ฃ์ด ์ฌ์ฉํ๋๊ฒ ์ข๋ ํธํ๊ฑฐ ๊ฐ์ต๋๋ค.(๊ฐ๋ ์ฑ ์ธก๋ฉด์์๋์ฉ) ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์ฉ~!
๋ฐ์ํ
'React Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React - useRef ๋ณ์ ์ ์ธํ๊ธฐ (0) | 2020.12.05 |
---|---|
React - ๋ฐฐ์ด ๋๋๋ง (0) | 2020.12.03 |
React - input ๊ด๋ฆฌ (0) | 2020.12.01 |
React - useState (0) | 2020.11.12 |
React - Conditional Rendering (0) | 2020.11.10 |