React
React - 배열에서 항목 제거하기
Starters
2020. 9. 10. 22:51
- UserList.js -
1. userList함수에서 onRemove라는 props 받아온다.
function UserList( { users, onRemove }){
2. onRemove={onRemove} 추가
return (
<div>
{
users.map(
(user, index) => (
<User
user={user}
key={index}
onRemove={onRemove}
/>
)
)
}
</div>
)
3. User 함수에서도 onRemove props로 받아와준다.
function User({ user, onRemove }){
4. User 함수에 <button> 추가
return (
<div>
<b>{user.username}</b><span>({user.email})</span>
<button>삭제</button>
</div>
);
5. button에 onClick속성을 통해 새로운 함수 만들어준다. - 파라미터를 넣어주기 위해
<button onClick={() => onRemove(user.id)}>삭제</button>
6. 만약 계속 user.~~ 이런식으로 쓰는 게 싫다면, 비구조 할당 사용
function User({ user, onRemove }){
const {username, email, id} = user;
return (
<div>
<b>{username}</b><span>({email})</span>
<button onClick={() => onRemove(id)}>삭제</button>
</div>
);
}
- App.js -
어떤 값을 제거할 때에도, 생성할 때와 마찬가지로 불변성을 지키면서 수행해야한다.
=> filter() 함수 사용하면 해결할 수 있음
7. onRemove 함수 생성
- 만약에 user.id가 파라미터로 가져온 id와 일치하지 않는 것만 추출하겠다는 뜻
const onRemove = id => {
setUsers(users.filter(user => user.id !== id))
};
- 만약 id가 3인 값에 대해 onRemove를 수행하면, user.id !== id 가 참인 것들로만 새로운 배열 생성해서 반환(id가 1, 2 인 것들)
8. onRemove를 UserList에 전달
return (
<>
<CreateUser
username={username}
email={email}
onChange={onChange}
onCreate={onCreate}/>
<UserList users={users} onRemove={onRemove}/>
</>
);
※ 만약 5번 항목에서 onRemove={onRemove(id)} 이런식으로 쓰게되면,
컴포넌트가 렌더링 되는 순간 함수가 바로 실행되면서 모든 값이 삭제된다.
Javascript 배열 내장함수(filter)
filter() 조건에 맞는 값을 추출 기존 배열은 건들이지 않고, 새로운 배열 만들어냄
startersdev.tistory.com
React - 배열에 항목 추가하기
1. CreateUser.js 생성 import React from 'react'; function CreateUser( { username, email, onChange, onCreate } ){ return ( 등록 ); } export default CreateUser; - App.js - 코드 추가 import React, { us..
startersdev.tistory.com