https://binggamel.tistory.com/m/100
๐์ปดํฌ๋ํธ ๊ฐ ๋ฐ๊พธ๊ธฐ / useState ์ฌ์ฉ
input์ ๋ฐ์ ์ฒ๋ฆฌํ๊ธฐ
import React from 'react';
import { useState } from 'react';
function InputSample() {
const [text, setText] = useState('');
const onChange = (e) => {
setText(e.target.value);
};
const onReset = () => {
setText('');
};
return (
<div>
<input onChange={onChange} value={text} />
<button onClick={onReset}>์ด๊ธฐํ</button>
<div>
<d>๊ฐ: {text}</d>
</div>
</div>
);
}
export default InputSample;
Counter์ ์ฐ์ธ useState๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ ์ ์๋ค
input์ onChange ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉ!
์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ e๋ก ๋ฐ์ ์ฌ์ฉํจ
e.target ๐ input DOM
e.target.value ๐ ํ์ฌ input์ ์ ๋ ฅํ ๊ฐ์ ๊ฐ์ ธ์ด
์ฌ๋ฌ๊ฐ input์ ๋ฐ์ ์ฒ๋ฆฌํด๋ณด์
input์ name์ ์ค์ ํ๊ณ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด ๊ฐ์ ์ฐธ๊ณ ๋๋ก ํ์
InputSample2.js
import React from 'react';
import { useState } from 'react';
function InputSample2() {
const [inputs, setInputs] = useState({
nikname: '',
roles:''
});
const { nikname, roles } = inputs; //๋น๊ตฌ์กฐํ ํ ๋น์ ํตํด ๊ฐ ์ถ์ถ
const onChange = (e) => {
const { value, name } = e.target; //ํ๊ทธ ์์์ธ name๊ฐ๊ณผ value๊ฐ์ ๋ฐ๋๋ค
setInputs({
...inputs, //spread - ๋ฆฌ์กํธ์ ๋ถ๋ณ์ฑ์ ์งํค๊ธฐ์ํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๊ฑฐ๊ธฐ์ ๋ณํ๋ฅผ ์ค๋ค
[name]:value //name ํค๋ฅผ ๊ฐ์ง ๊ฐ์ value๋ก ์ค์
});
}
const onReset = () => {
setInputs({
nikname: '',
roles:''
})
}
return (
<div>
<input name="nikname" placeholder="nikname" onChange={onChange} value={ nikname }/>
<input name="roles" placeholder="roles" onChange={onChange} value={ roles }/>
<button onClick={onReset}>reset</button>
<div>
<b>๊ฐ: </b>
{nikname} | {roles}
</div>
</div>
)
}
export default InputSample2;
...inputs์ผ๋ก spread๋ฌธ๋ฒ์ ์ด์ฉํ๋ ์ด์ ๋ react์ ๋ถ๋ณ์ฑ์ ์งํค๊ธฐ ์ํจ์ด๋ค
๋ถ๋ณ์ฑ์ ์ง์ผ์ค์ผ๋ง ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ ์ํ๊ฐ ์ ๋ฐ์ดํธ ๋์์ ๊ฐ์ง ํ ์ ์๊ณ ์ด์๋ฐ๋ผ ํ์ํ ๋ฆฌ๋ ๋๋ง์ด ์งํ๋๋ค
์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํฌ ์ ์๋ค
inputs[name] = value ์ด๋ฐ์์ผ๋ก ๊ธฐ์กด์ํ๋ฅผ ์ง์ ์์ ํ๊ฒ ๋๋ฉด, ๊ฐ์ ๋ฐ๊ฟ๋ ๋ฆฌ๋ ๋๋ง์ด ๋์ง ์๋๋ค
๐ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๊ทธ ์ ๊ฐ์ฒด์ ๋ณํ๋ฅผ ์ฃผ์ด์ผ ํ๋ค
๐์ฐธ๊ณ ์!!
'Develop Study ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React study / sass ์ฐ๊ฒฐ์ Node Sass version 5.0.0 is incompatible with ^4.0.0. (0) | 2021.01.26 |
---|---|
react study / ๋ฐฐ์ด ์ ๋ ฅ / ์์ / ์ญ์ (0) | 2021.01.25 |
react study / ์ปดํฌ๋ํธ์์ ๊ฐ ๋ฐ์ ๋ฐ๊พธ๊ธฐ (0) | 2021.01.22 |
react study / props ๊ฐ๋ ์ดํด (0) | 2021.01.22 |
react ๋ฆฌ์ํธ ๊ณต๋ถ / ์์ํ๊ธฐ (0) | 2021.01.22 |