Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 내일배움캠프 프로젝트
- 리액트 훅
- 코딩테스트
- 파이썬 replace
- tanstack query
- JavaScript
- 파이썬 반복문
- 파이썬 딕셔너리
- 프로그래머스
- js
- 타입스크립트 props
- 리액트 프로젝트
- typeScript
- 한글 공부 사이트
- REACT
- 타입스크립트 리액트
- 내배캠 프로젝트
- 자바스크립트
- 파이썬 for
- 파이썬 list
- 파이썬 slice
- Next 팀 프로젝트
- 리액트
- 내일배움캠프
- React Hooks
- 내일배움캠프 최종 프로젝트
- 파이썬 for in
- useState
- 타입스크립트
- 파이썬 enumerate
Archives
- Today
- Total
sohyeon kim
[React] 리액트 리스트 추가, 삭제 & 컴포넌트 파일 분리 본문
728x90
내배캠 리액트 입문 수업 중.. 내용 정리!
리스트를 추가 하고 삭제해보자 ~
👩💻 전체 코드
📁 App.jsx
import React, { useState } from "react";
import "App.css";
import AddButton from "components/AddButton";
import User from "components/User";
function App() {
const [users, setUsers] = useState([ {/*기존 리스트*/}
{ id: 1, age: 11, name: "요리" },
{ id: 2, age: 12, name: "미나토" },
{ id: 3, age: 34, name: "호리" },
{ id: 4, age: 40, name: "사오리" },
]);
const [name, setName] = useState("");
const [age, setAge] = useState("");
const nameChangeHandler = (event) => {
setName(event.target.value); {/*input에 입력하는 값 표시*/}
};
const ageChangeHandler = (event) => {
setAge(event.target.value); {/*input에 입력하는 값 표시*/}
};
const clickAddButtonHandler = () => {
const newUser = {
id: users.length + 1,
age: age,
name,
}; {/*클릭 시 새 유저를 만들고 */}
setUsers([...users, newUser]); {/*기존 값을 원래의 users 에 newUser 를 추가한 배열로 set!*/}
};
const clickRemoveButtonHandler = (id) => {
const newUser = users.filter((user) => user.id !== id);
{/*클릭한 X 의 user.id를 가져와 filter로 그 user 를 제외한 user 만 걸러낸다.*/}
setUsers(newUser);
};
return (
<div style={{ margin: "20px" }}>
<div>
이름 :
<input value={name} onChange={nameChangeHandler} />
<br />
나이 :
<input value={age} onChange={ageChangeHandler} />
<br />
<AddButton addFunction={clickAddButtonHandler}>추가</AddButton>
</div>
<div className="app-style">
{users.map((item) => (
<User
key={item.id}
item={item}
removeFunction={clickRemoveButtonHandler} {/*props 전달*/}
/>
))}
</div>
</div>
);
}
export default App;
는 띄어쓰기 ~
📁 AddButton.jsx
const AddButton = ({ addFunction, children }) => {
return (
<button className="btn" onClick={addFunction}>
{children}
</button>
);
};
export default AddButton;
{children} : App.js 의 <AddButton> 내에 있는 "추가"
📁 User.jsx
const User = ({ item, removeFunction }) => {
return (
<div key={item.id} className="component-style">
{item.name} - {item.age}
<button className="btn" onClick={() => removeFunction(item.id)}>
X
</button>
</div>
);
};
export default User;
클릭한 item의 id props ➡️ clickRemoveButtonHandler 로 전달
그 아이디의 리스트를 지울 수 있게!
728x90
반응형
'React' 카테고리의 다른 글
[React] useState(1) : 카운트앱, input 값 받아오기 (0) | 2024.01.23 |
---|---|
[React] props(2) : children 활용 (0) | 2024.01.23 |
[React] 리액트로 리스트 만들기 & 컴포넌트 반복 (0) | 2024.01.20 |
[React] props(1) : 컴포넌트 간의 정보 교환 (0) | 2024.01.19 |
[React] jsconfig : import 파일 절대 경로 설정, 파일명만으로 불러오기 (0) | 2024.01.19 |