전에 만들었던 users
배열에 항목을 추가해보자.
CreateUser.js
는 App.js
에서 props를 받아올 것이다.
받아올 props 목록
먼저 CreateUser.js
를 만들자
input
2개에 button
1개,
그리고 App.js
에서 가져올 props들의 속성도 기록하자.
import React from "react";
function CreateUser({username, email, onChange, onCreate}){
return(
<div>
<input
name="username"
value={username}
placeholder="계정명"
onChange={onChange}
/>
<input
name="email"
value={email}
placeholder="이메일"
onChange={onChange}
/>
<button onClick={onCreate}>추가하기</button>
</div>
)
}
export default CreateUser
이 다음은 App.js에다가 CreateUser로 보내줄 props들을 만들어야한다.
input
의 상태를 관리하는 useState() 생성
const [inputs, setInputs] = useState({
username: '',
email: '',
});
input
요소의 비구조화 할당
const {username, email} = inputs;
onChange()
선언
const onChange = e => {
const {name, value} = e.target;
setInputs({
...inputs,
[name] : value
})
}
생성될 요소의 다음 id
값을 정의
const nextId = useRef(4)
onCreate()
선언
const onCreate = () => {
const user ={
id: nextId.current,
username,
email
};
setUsers([...users, user]);
setInputs({
username: '',
email: ''
});
console.log(nextId.current);
nextId.current +=1;
}
추가되는 user
객체를 선언하고, setUsers
를 이용해서 원래 있던 users
배열에 user
를 추가한다.(이때 users
배열의 상태를 관리하기 위해서 useState로 묶어놓은 것을 주목할 것)
setInputs
는 버튼을 누른 뒤에 input
창을 초기화 하는것이다.
그와 동시에, 만약 다른 user가 추가될때 id의 값을 1 더한 값으로 추가해야하므로
nextId.current +=1
을 통해 nextId
값을 바꾼다.
setUsers
에 ...users
로 새로운 배열을 복사한 이유는 저번에도 설명했다 시피 불변성을 유지해야 react가 렌더링을 진행한다.
결과 화면