import React from "react";
export default function Create({ username, onChange, age, onCreate }) {
return (
<div>
<input
name="username"
placeholder="계정명"
onChange={onChange}
value={username}
/>
<input name="age" placeholder="나이" onChange={onChange} value={age} />
<button onClick={onCreate}>등록</button>
</div>
);
}
import React from "react";
function UserMap({ props, onRemove }) {
return (
<div>
{props.username}:{props.age}
<button onClick={() => onRemove(props.username)}>삭제</button>
</div>
);
}
export default function BusinessCard({ user, onRemove }) {
return (
<div>
{user.map((test) => (
<UserMap props={test} onRemove={onRemove} />
))}
</div>
);
}
import React, { useState } from "react";
import BusinessCard from "./BusinessCard";
import Create from "./Create";
import "./styles.css";
export default function App() {
const [inputs, setInputs] = useState({
username: "",
age: ""
});
const { username, age } = inputs;
const onChange = (e) => {
setInputs({
...inputs,
[e.target.name]: e.target.value
});
};
const [user, setUser] = useState([
{
username: "홍길동",
age: 18
},
{
username: "이유진",
age: 29
}
]);
const onCreate = () => {
const newUser = {
username,
age
};
setUser(user.concat(newUser));
setInputs({
username: "",
age: ""
});
};
const onRemove = (username) => {
setUser(user.filter((test) => test.username !== username));
};
return (
<div className="App">
<BusinessCard user={user} onRemove={onRemove} />
<Create
onCreate={onCreate}
onChange={onChange}
username={username}
age={age}
/>
</div>
);
}
반응형
'Frontend > React' 카테고리의 다른 글
Vue 기초문법정리 (0) | 2022.01.21 |
---|---|
Counter 리액트 (0) | 2020.10.19 |
e.target (0) | 2020.10.11 |
[React] 숫자 증가감소 버튼만들기 Counter (0) | 2020.07.12 |
[React] props와 state(+css 적용) (0) | 2020.07.11 |