μ¬μ©μμκ² μ
λ ₯μ λ°λ νκ·Έλ <input>
, <textarea>
λ± μ‘΄μ¬ νλλ°React
μμ μ§μ νΈλ€λ§ ν λλ μ΄λ»κ² νλ μ§ μμλ³΄κ² μ΅λλ€.
useState μ΄μ©
β input μ value μ€μ
import { useState } from 'react';
const DiaryEditor = () => {
const [author, setAuthor] = useState('');
// author λΌλ state λ setAuthor κ° μλλ©΄ μνλ³νκ° μΌμ΄λμ§ μμ΅λλ€.
// κ·Έλ¬λ―λ‘ νλ©΄ input μ°½μ μ΄λ ν κ²λ μμλ‘ μ
λ ₯ ν μ μμ΅λλ€.
return (
<div className="DiaryEditor">
<h2>μ€λμ μΌκΈ°</h2>
<div>
<input value={author}/>
</div>
</div>
);
};
export default DiaryEditor;
- μ΄κΈ°μ
input
μλ μλ¬΄λ° κ°λ μ λ ₯λμ§ μμ΅λλ€. - μ΄μ λ
input
νκ·Έμvalue
λ₯Όauthor
λ‘ μ£Όκ³ μλλ° μν λ³ν ν¨μμΈsetAuthor
μ κ°μ΄ λ³νμ§ μκΈ° λλ¬Έ μ λλ€. ( μ¦, μλ¬΄λ° μ€μ μ΄ λμ΄μμ§ μμ΅λλ€. ) - κ²°λ‘ μ,
input
μ κ°μ΄ 무μμλ‘ μ λ ₯μ΄ λλ©΄,author
μ κ°μ΄ λ°λκ³ μ€μκ°μΌλ‘ λ°μμ΄ λμΌ ν©λλ€.
β onChange() μ΄λ²€νΈ
import { useState } from 'react';
const DiaryEditor = () => {
const [author, setAuthor] = useState('');
// author λΌλ state λ setAuthor κ° μλλ©΄ μνλ³νκ° μΌμ΄λμ§ μμ΅λλ€.
// κ·Έλ¬λ―λ‘ νλ©΄ input μ°½μ μ΄λ ν κ²λ μμλ‘ μ
λ ₯ ν μ μμ΅λλ€.
return (
<div className="DiaryEditor">
<h2>μ€λμ μΌκΈ°</h2>
<div>
<input
value={author}
onChange={(e) => {
setAuthor(e.target.value);
}}
/>
</div>
</div>
);
};
export default DiaryEditor;
onChange()
: κ°μ΄ λ°λμμ λ μννλ μ΄λ²€νΈ- κ°μ μ λ ₯νλ©΄ μ΄λ²€νΈ μμ λ€μ΄μλ μ½λ°± ν¨μκ° μ€ν λ©λλ€.
- μ΄λ²€νΈκ° λ°μν΄μ λμ¨ κ°μ
setAuthor
μ λ겨μ μν λ³νκ° μΌμ΄λ©λλ€. - λ§μ½,
<textarea/>
μ μ¬μ© νλ κ²½μ°μλ μμ λμΌνκ² ν μ μμ΅λλ€.
Tip. Input
inputμ onChangeλ₯Ό μ¬μ©νλ©΄ μ΄λ²€νΈ κ°μ²΄ eλ₯Ό νλΌλ―Έν°λ‘ λ°μμ¬ μ μλ€.
μ΄ κ°μ²΄μ e.targetμ μ΄λ²€νΈκ° λ°μν DOMμ κ°λ¦¬ν¨λ€.
e.target.valueλ₯Ό μ‘°ννλ©΄ νμ¬ inputμ valueκ°μ μ μ μλ€.
β μ€λ³΅λλ μ½λλ₯Ό μ€μ΄λ λ°©λ²
import { useState } from 'react';
const DiaryEditor = () => {
const [state, setState] = useState({
author: '', // 곡백 λ¬Έμμ΄
content: '', // 곡백 λ¬Έμμ΄
});
return (
<div className="DiaryEditor">
<h2>μ€λμ μΌκΈ°</h2>
<div>
<input
value={state.author}
onChange={(e) => {
setState({
author: e.target.value,
content: state.content, // κ°μ΄ λμμ λ°λλ©΄ μλκΈ° λλ¬Έμ κΈ°μ‘΄μ κ° μ μ§
});
}}
/>
</div>
<div>
<textarea
value={state.content}
onChange={(e) => {
setState({
content: e.target.value,
author: state.author,
});
}}
></textarea>
</div>
</div>
);
};
export default DiaryEditor;
- μ΄κΈ° μνμΈ
state
κ°μ²΄λ₯Ό κ°μ§κ³ μν λ³ν κ°μ²΄μΈsetState
κ°μ²΄λ₯Ό κ°μ§λλ€. - κ°μ²΄μ κ°μ λ°κΎΈλ €λ©΄ μλ‘μ΄ κ°μ²΄λ₯Ό μ λ¬ν΄μ€μΌ ν©λλ€.
- νμ§λ§ μ μ μ λ¬ν΄μΌ λλ κ°μ²΄μ μκ° λ§μμ§λ©΄
spread
λ°©λ²μ μ¬μ© ν©λλ€.
β Spread λ°©μ
- ν΄λΉ κ°μ²΄κ° κ°μ§κ³ μλ `νλ‘νΌν°( μμ± )` μ λΏλ €μ€λλ€. ( νΌμ³μ€λ€. )
import { useState } from 'react';
const DiaryEditor = () => {
const [state, setState] = useState({
author: '',
content: '',
});
return (
<div className="DiaryEditor">
<h2>μ€λμ μΌκΈ°</h2>
<div>
<input
value={state.author}
onChange={(e) => {
setState({
...state, // author λ μλ author μ κ°, content λ μλ content μ κ°.
author: e.target.value,
});
}}
/>
</div>
<div>
<textarea
value={state.content}
onChange={(e) => {
setState({
...state,
content: e.target.value,
});
}}
></textarea>
</div>
</div>
);
};
export default DiaryEditor;
β μ΄λ²€νΈ νΈλ€λ¬λ₯Ό νλλ‘
- νκ·Έμ κ°κ°
name
μ΄λΌλ μμ±μ μ€λλ€.
<input>
νκ·Έμ name μμ±μ<input>
μμμ μ΄λ¦μ λͺ μν©λλ€. name μμ±μ νΌ(form)μ΄ μ μΆλ ν μλ²μμ νΌ λ°μ΄ν°(form data)λ₯Ό μ°Έμ‘°νκΈ° μν΄ μ¬μ©λκ±°λ, μλ°μ€ν¬λ¦½νΈμμ μμλ₯Ό μ°Έμ‘°νκΈ° μν΄ μ¬μ©λ©λλ€.
μΆμ² : TCP, school
import { useState } from 'react';
const DiaryEditor = () => {
const [state, setState] = useState({
author: '',
content: '',
});
const handleChangeState = (e) => { // input μ λ³νλ₯Ό μ£Όλ©΄ μ€ν λ©λλ€.
console.log(e.target.name); // κ°κ° λ§λ μ΄λ¦κ³Ό κ°μ΄ μ½μμ μΆλ ₯
console.log(e.target.value);
setState({
// λ³κ²½ν νκ·Έμ μ΄λ¦μΈ author μ content λ μ€μ λ‘ λ°κΏμΌ νλ state μμ±μ key μ κ°μ΅λλ€.
...state,
[e.target.name]: e.target.value,
});
};
return (
<div className="DiaryEditor">
<h2>μ€λμ μΌκΈ°</h2>
<div>
<input
name="author"
value={state.author}
onChange={handleChangeState}
/>
</div>
<div>
<textarea
name="content"
value={state.content}
onChange={handleChangeState}
></textarea>
</div>
</div>
);
};
export default DiaryEditor;
β μ°Έκ³
'π Front-End > React.js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
React - 리μ€νΈ λ λλ§ ( μ‘°ν ) (0) | 2022.10.23 |
---|---|
useRef (0) | 2022.10.23 |
Props (0) | 2022.10.23 |
State(μν) (0) | 2022.10.23 |
JSX λ¬Έλ² (0) | 2022.10.23 |