input κΈ°λ₯ ꡬν
μμ κΈ°λ₯ ꡬν
Tag κΈ°λ₯ ꡬν μ½λ
export const Tag = () => { const initialTags = ['CodeStates', 'kimcoding']; const [tags, setTags] = useState(initialTags); const removeTags = (indexToRemove) => { // TODO : νκ·Έλ₯Ό μμ νλ λ©μλλ₯Ό μμ±νμΈμ. const filter = tags.filter ( (el, index) => index !== indexToRemove); setTags(filter); }; const addTags = (event) => { // TODO : tags λ°°μ΄μ μλ‘μ΄ νκ·Έλ₯Ό μΆκ°νλ λ©μλλ₯Ό μμ±νμΈμ. // μ΄ λ©μλλ νκ·Έ μΆκ° μΈμλ μλ 3 κ°μ§ κΈ°λ₯μ μνν μ μμ΄μΌ ν©λλ€. // - μ΄λ―Έ μ λ ₯λμ΄ μλ νκ·ΈμΈμ§ κ²μ¬νμ¬ μ΄λ―Έ μλ νκ·ΈλΌλ©΄ μΆκ°νμ§ λ§κΈ° // - μ무κ²λ μ λ ₯νμ§ μμ μ± Enter ν€ μ λ ₯μ λ©μλ μ€ννμ§ λ§κΈ° // - νκ·Έκ° μΆκ°λλ©΄ input μ°½ λΉμ°κΈ° const inputVal = event.target.value; if(event.key === "Enter" && inputVal !== '' && !tags.includes(inputVal)) { setTags([...tags, inputVal]); event.target.value = ''; } }; return ( <> <TagsInput> <ul id="tags"> {tags.map((tag, index) => ( <li key={index} className="tag"> <span className="tag-title">{tag}</span> <span className="tag-close-icon" onClick={ () => removeTags(index)} > x {/* TODO : tag-close-iconμ΄ tag-title μ€λ₯Έμͺ½μ x λ‘ νμλλλ‘ νκ³ , μμ μμ΄μ½μ click νμ λ removeTags λ©μλκ° μ€νλμ΄μΌ ν©λλ€. */} </span> </li> ))} </ul> {/* ν€λ³΄λμ Enter ν€μ μν΄ addTags λ©μλκ° μ€νλμ΄μΌ ν©λλ€. */} <input className="tag-input" type="text" onKeyUp={(e) => addTags(e)} placeholder="Press enter to add tags" /> </TagsInput> </> ); };
μ΄λ²€νΈ νΈλ€λ¬ : μ΄λ€ μ΄λ²€νΈκ° λ°μνμ λ ν΄λΉ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ ν¨μλ₯Ό λ§ν©λλ€. λλ μ΄λ²€νΈκ° λ°μνλ κ²μ κ³μ λ£κ³ μλ€λ μλ―Έλ‘ μ΄λ²€νΈ 리μ€λλΌκ³ λΆλ₯΄κΈ°λ ν©λλ€.
<button onClick = {activate}> Activate </button>
λ²νΌμ΄λ (a) tagλ₯Ό ν΅ν λ§ν¬ μ΄λ λ±κ³Ό κ°μ΄ μ£Όλ‘ μ¬μ©μμ νλμ λ°λΌ μ ν리μΌμ΄μ μ΄ λ°μν΄μΌ ν λ μμ£Ό μ¬μ©νλ μ΄λ²€νΈμ λλ€.
// ν¨μ μ μνκΈ°
return (
<div>
...
<button onClick={() => alert(name)}>Button</button>
...
</div>
);
};
// ν¨μ μ체λ₯Ό μ λ¬νκΈ°
const handleClick = () => {
alert(name);
};
return (
<div>
...
<button onClick={handleClick}>Button</button>
...
</div>
);
};
(μΆμ² : μνμ μ²μ λ§λ 리μ‘νΈ)
리μ€νΈλ μ°λ¦¬λ§λ‘ λͺ©λ‘μ΄λΌλ λ», 리μ€νΈλ₯Ό μν΄ μ¬μ©νλ μλ£κ΅¬μ‘°λ λ°°μ΄.
μ»΄ν¨ν° νλ‘κ·Έλλ°μμλ κ°μ μμ΄ν μ μμλλ‘ λͺ¨μλμ κ²μ΄ 리μ€νΈμ ν΄λΉ.
λ°°μ΄μ μλ°μ€ν¬λ¦½νΈμ λ³μλ κ°μ²΄λ₯Ό νλμ λ³μλ‘ λ¬Άμ΄λμ κ².
ν€λ μλ¨μ΄λ‘ μ΄μ λΌλ μλ―Έ, μ΄μ λ λͺ¨λ κ°μ κ³ μ νλ€.
νλ‘κ·Έλλ°μμμ ν€λ κ° κ°μ²΄λ μμ΄ν μ ꡬλΆν μ μλ κ³ μ ν κ°.
리μ‘νΈμμ μμ΄ν μ ꡬλΆνκΈ° μν κ³ μ ν λ¬Έμμ΄, 리μ‘νΈμμμ ν€μ κ°μ 리μ€νΈμ μλ μλ¦¬λ¨ΌνΈ μ¬μ΄μλ§ κ³ μ ν κ°μ΄λ©΄ λ©λλ€.
1. ν€κ°μΌλ‘ μ«μμ κ°μ μ¬μ©ν κ²
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li key = {number.toString()}>
{number}
</li>
);
μ΄λ κ² νλ©΄ μ§κΈμ²λΌ numbers λ°°μ΄μ μ«μλ€μ΄ μ€λ³΅λμ§ μλ κ²½μ°μλ μ μμ μΌλ‘ μλνμ§λ§, λ§μ½ numbers λ°°μ΄μ μ€λ³΅λ μ«μκ° λ€μ΄μλ€λ©΄ ν€κ°λ μ€λ³΅λμ§ λλ¬Έμ κ³ μ ν΄μΌ νλ€λ ν€κ°μ μ‘°κ±΄μ΄ μΆ©μ‘±λμ§ μμ΅λλ€. μ΄λ¬ν κ²½μ° μ€νν΄ λ³΄λ©΄ ν€κ°μ΄ μ€λ³΅λλ€λ κ²½κ³ λ©μμ§κ° μΆλ ₯λ©λλ€.
2. ν€κ°μΌλ‘ idλ₯Ό μ¬μ©ν κ²
const todoItems = todos.map((todo) =>
<li key = {todo.id}>
{todo.text}
</li>
);
idμ μλ―Έ μμ²΄κ° κ³ μ ν κ°μ΄λΌλ κ²μ΄κΈ° λλ¬Έμ ν€κ°μΌλ‘ μ¬μ©νκΈ°μ μ ν©νλ€. μ΄λ κ² idκ° μλ κ²½μ°μλ λ³΄ν΅ μ΄ id κ°μ ν€κ°μΌλ‘ μ¬μ©νκ² λ©λλ€.
3. ν€κ°μΌλ‘ μΈλ±μ€λ₯Ό μ¬μ©ν κ²
const todoItems = todos.map((todo, index) =>
<li key = {index}>
{todo.text}
</li>
);
μ΄ λ°©λ²μ map() ν¨μμμ λλ²μ§Έ νλΌλ―Έν°λ‘ μ κ³΅ν΄ μ£Όλ μΈλ±μ€ κ°μ ν€κ°μΌλ‘ μ¬μ©νλ κ²μ λλ€. μ΄ μΈλ±μ€λ λ°°μ΄ λ΄μμ νμ¬ μμ΄ν μ μΈλ±μ€λ₯Ό μλ―Έν©λλ€. μΈλ±μ€ κ°λ κ³ μ ν κ°μ΄κΈ° λλ¬Έμ ν€κ°μΌλ‘ μ¬μ©ν΄λ λ©λλ€. νμ§λ§ λ°°μ΄μμ μμ΄ν μ μμκ° λ°λ μ μλ κ²½μ°μλ ν€κ°μΌλ‘ μΈλ±μ€λ₯Ό μ¬μ©νλ κ²μ κΆμ₯νμ§ μμ΅λλ€. μ±λ₯μ λΆμ μ μΈ μν₯μ λΌμΉ μ μκ³ μ»΄ν¬λνΈμ stateμ κ΄λ ¨νμ¬ λ¬Έμ λ₯Ό μΌμΌν¬ μ λ μκΈ° λλ¬Έμ λλ€. μ°Έκ³ λ‘ λ¦¬μ‘νΈμμλ ν€λ₯Ό λͺ μμ μΌλ‘ λ£μ΄ μ£Όμ§ μμΌλ©΄ μ΄ μΈλ±μ€ κ°μ ν€κ°μΌλ‘ μ¬μ©ν©λλ€.
]μ€λμ μ΄μ νμ§ λͺ»νλ Tag ꡬνμ λ§μ νκ³ λ ν, μ΄λλ°΄μ€ autocompleteλ₯Ό ν΄λ³΄λ €κ³ μλνμ§λ§ μ€ν¨νλ€. μΆκ°μ μΌλ‘ μ€ν κ°μΈ νμ΅ μκ°μ λ§μ ν΄λ³Ό μμ μ΄λ€. Tag ꡬν λΈλ‘κΉ μ νκ³ λ ν μκ°μ΄ λ¨μ 리μ‘νΈ μ± μ 리μ€νΈ, ν€μ λν μλ£λ₯Ό λ³΄κ³ κ³΅λΆνλ©° λΈλ‘κΉ νμλ€. κ³Όμ μμ ꡬννλ <li key ~> λΆλΆμ λ 곡λΆν΄ λ³΄κ³ μΆμκΈ° λλ¬Έμ΄λ€. κ·Έλ¦¬κ³ κ°μΈ νμ΅ μκ°μ λ―Έλ νλ‘μ νΈλ₯Ό νλ λ§λ€μ΄λ³΄λ €κ³ μμνλ€. λΈλ‘κ·Έ λ§λ€κΈ°μ΄λ©° '리μ‘νΈλ₯Ό λ€λ£¨λ κΈ°μ ' μ± λ§μ§λ§μ νλ‘μ νΈ μ€λͺ μ΄ μμ΄μ κ·Έκ±° 보면μ λ§λ€μ΄ λ³Ό μμ μ΄λ€.