벨로퍼트와 함께하는 모던 리액트를 학습하여 작성했습니다.
1.배열에 항목 삭제 하기
useState를 사용하여 상태를 업데이트한다.
1-1.상태 정의
names: 이름 목록을 저장하는 배열 상태입니다.
각 항목은 고유한 id를 가진 객체입니다.
const [names, setNames] = useState([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]);
1-2.항목 제거 함수
names.filter((name) => name.id !== id): id가 일치하지 않는 항목들만 포함된 새로운 배열을 반환합니다.
const handleRemove = (id) => {
setNames(names.filter((name) => name.id !== id));
};
1-3.컴포넌트 반환 JSX
names.map((person) => (<li key={person.id}>...</li>)): names 배열을 순회하면서 각 이름을 <li> 요소로 렌더링합니다.
<button onClick={() => handleRemove(person.id)}>Remove</button>: "Remove" 버튼을 클릭하면 해당 항목을 제거하는 handleRemove 함수를 호출합니다.
return (
<div>
<ul>
{names.map((person) => (
<li key={person.id}>
{person.name}
<button onClick={() => handleRemove(person.id)}>Remove</button>
</li>
))}
</ul>
</div>
);
import React, { useState } from 'react';
function NameList() {
// 상태로 names 배열과 input 상태를 정의
const [names, setNames] = useState([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]);
const [input, setInput] = useState('');
// 입력 필드의 값을 변경하는 함수
const handleChange = (e) => {
setInput(e.target.value);
};
// 새로운 이름을 names 배열에 추가하는 함수
const handleAdd = () => {
if (input.trim() === '') return; // 빈 입력 무시
const newName = { id: names.length + 1, name: input }; // 새로운 이름 객체 생성
setNames([...names, newName]); // 새로운 이름 객체를 배열에 추가
setInput(''); // 입력 필드를 초기화
};
// 특정 항목을 제거하는 함수
const handleRemove = (id) => {
setNames(names.filter((name) => name.id !== id)); // id가 일치하지 않는 항목들로 새로운 배열 생성
};
return (
<div>
<input
type="text"
value={input}
onChange={handleChange}
placeholder="Enter a name"
/>
<button onClick={handleAdd}>Add Name</button>
<ul>
{names.map((person) => (
<li key={person.id}>
{person.name}
<button onClick={() => handleRemove(person.id)}>Remove</button>
</li>
))}
</ul>
</div>
);
}
export default NameList;
'FrontEnd > React' 카테고리의 다른 글
[React] 배열에서 항목 수정하기 (0) | 2024.08.06 |
---|---|
[React] 배열에 항목추가하기 (0) | 2024.08.06 |
[React] 배열 렌더링 (0) | 2024.08.06 |