728x90
1. 삭제 ui 와 아이디를 가제와서 삭제하는 함수 만들기
1) userList.js
-- User 컴포넌트의 삭제 버튼이 클릭 될 때는 user.id 값을 앞으로 props 로 받아올 onRemove 함수의 파라미터로 넣어서 호출해주어야 한다
() => Remove(id) 함수로 새로 만들지 않고
onRemove(id)를 적용한다면 렌더링 된 순간 함수 호출된다.
import React from 'react';
function User({ user, onRemove }) {
return (
<div>
<b>{user.username}</b> <span>({user.email})</span>
<button onClick={() => onRemove(user.id)}>삭제</button>
</div>
);
}
function UserList({ users, onRemove }) {
return (
<div>
{users.map(user => (
<User user={user} key={user.id} onRemove={onRemove} />
))}
</div>
);
}
export default UserList;
2. user.id 가 파라미터로 일치하지 않는 원소만 추출 - filter 함수
2) App.js
-- 제거 시 filter 함수 사용
import React, { useRef, useState } from 'react';
import UserList from './UserList';
import CreateUser from './CreateUser';
function App() {
const [inputs, setInputs] = useState({
username: '',
email: ''
});
const { username, email } = inputs;
const onChange = e => {
const { name, value } = e.target;
setInputs({
...inputs,
[name]: value
});
};
const [users, setUsers] = useState([
{
id: 1,
username: 'velopert',
email: 'public.velopert@gmail.com'
},
{
id: 2,
username: 'tester',
email: 'tester@example.com'
},
{
id: 3,
username: 'liz',
email: 'liz@example.com'
}
]);
const nextId = useRef(4);
const onCreate = () => {
const user = {
id: nextId.current,
username,
email
};
setUsers(users.concat(user));
setInputs({
username: '',
email: ''
});
nextId.current += 1;
};
const onRemove = id => {
// user.id 가 파라미터로 일치하지 않는 원소만 추출해서 새로운 배열을 만듬
// = user.id 가 id 인 것을 제거함
setUsers(users.filter(user => user.id !== id));
};
return (
<>
<CreateUser
username={username}
email={email}
onChange={onChange}
onCreate={onCreate}
/>
<UserList users={users} onRemove={onRemove} />
</>
);
}
export default App;
-- user.id 가 파라미터로 일치하지 않는 원소만 추출해서 새로운 배열을 만듬
user.id가 id인 것을 제거하는 로직
//삭제(id:파라미터로 받아온 id)
const onRemove = id =>{
setUsers(users.filter(user => user.id !== id));
};
728x90
'FRONT' 카테고리의 다른 글
[React] useEffect를 사용하여 마운트/언마운트/업데이트시 할 작업 설정 (0) | 2023.07.19 |
---|---|
[React] 배열에 항목 수정하기 (0) | 2023.07.18 |
[React] 배열에 항목 추가하기 (0) | 2023.07.18 |
[React] 배열 렌더링 하기 (0) | 2023.07.18 |
[React] useRef 로 특정 DOM 선택하기 (0) | 2023.07.17 |