-
React 시작하기 9. Array 항목 추가DEV/react 2024. 1. 5. 10:52
App.js
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: 'UserA', email: 'usera@gmail.com' }, { id: 2, username: 'UserB', email: 'userb@gmail.com' }, { id: 3, username: 'UserC', email: 'userc@naver.com' } ]); // useRef로 만들어진 객체는 React가 만든 전역 저장소에 저장되기 때문에 함수를 재 호출하더라도 마지막으로 업데이트한 current 값이 유지됨 const nextId = useRef(4); const onCreate = () => { const user = { id: nextId.current, username, email }; // 2가지 방법이 존재 // setUsers([...users, user]); setUsers(users.concat(user)); setInputs({ username: '', email: '' }) nextId.current += 1; } return ( <> <CreateUser username={username} email={email} onChange={onChange} onCreate={onCreate} /> <UserList users={users} /> </> ); } export default App;
UserList.js
import React from "react"; function User({ user }) { return ( <div> <b>{user.username}</b> <span>({user.email})</span> </div> ) } function UserList({ users }) { return ( <div> { users.map((user) => ( <User user={user} key={user.id} /> )) } </div> ); } export default UserList;
CreateUser.js
import React from "react"; function CreateUser({ username, email, onChange, onCreate }) { return ( <div> <input name="username" placeholder="계정명" onChange={onChange} value={username} /> <input name="email" placeholder="이메일" onChange={onChange} value={email} /> <button onClick={onCreate}>등록</button> </div> ); } export default CreateUser;
'DEV > react' 카테고리의 다른 글
React Javascript 키 입력 이벤트 "onKeyPress is deprecated..." onKeyDown, onKeyUp을 쓰자. (0) 2024.02.16 React Hooks 간단 정리 (0) 2024.01.24 React 시작하기 8. Array Rendering (1) 2024.01.03 React 시작하기 7. 특정 DOM 선택하기 (useRef) (0) 2024.01.03 React 시작하기 6. Multiple Input State (1) 2024.01.03