diff --git a/src/App.jsx b/src/App.jsx
index dff16d3..ebffb55 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -6,11 +6,20 @@ import LoginPage from "./components/LoginPage"
function App() {
return (
+
+
+
+
} />
} />
+
);
}
diff --git a/src/components/LoginPage.jsx b/src/components/LoginPage.jsx
index e3e484c..128b6a0 100644
--- a/src/components/LoginPage.jsx
+++ b/src/components/LoginPage.jsx
@@ -3,24 +3,63 @@ import axios from "axios";
import { useNavigate } from "react-router-dom";
import "../styles/LoginPage.css";
-function LoginForm() {
-
+function LoginPage() {
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const navigate = useNavigate();
const handleLogin = async (e) => {
e.preventDefault();
+ try {
+ const response = await axios.post(
+ "https://reqres.in/api/login",
+ {
+ email: email,
+ password: password,
+ },
+ {
+ headers: {
+ "Content-Type": "application/json",
+ "x-api-key": "reqres-free-v1",
+ },
+ }
+ );
-
+ const { token } = response.data;
+
+ localStorage.setItem("email", email);
+ localStorage.setItem("token", token);
+
+ navigate("/userlist");
+ } catch (error) {
+ if (error.response && error.response.data && error.response.data.error) {
+ alert(error.response.data.error);
+ } else {
+ alert("로그인 실패");
+ }
+ console.error(error);
+ }
};
return (
);
}
-export default LoginForm;
+export default LoginPage;
diff --git a/src/components/UserList.jsx b/src/components/UserList.jsx
index 21539fc..968aabe 100644
--- a/src/components/UserList.jsx
+++ b/src/components/UserList.jsx
@@ -3,23 +3,70 @@ import axios from "axios";
import "../styles/UserList.css";
function UserList() {
+ const [users, setUsers] = useState([]);
+ const [searchTerm, setSearchTerm] = useState("");
+
+
+ const email = localStorage.getItem("email");
+ const token = localStorage.getItem("token");
+
+ useEffect(() => {
+ axios
+ .get("https://reqres.in/api/users", {
+ headers: {
+ "x-api-key": "reqres-free-v1",
+ },
+ })
+ .then((response) => {
+ setUsers(response.data.data);
+ })
+ .catch((error) => {
+ if (error.response && error.response.data && error.response.data.error) {
+ alert(error.response.data.error);
+ } else {
+ alert("유저 정보를 불러오는 데 실패했습니다.");
+ }
+ console.error(error);
+ });
+ }, []);
+
+ const filteredUsers = users.filter((user) => {
+ const keyword = searchTerm.toLowerCase();
+ return (
+ user.email.toLowerCase().includes(keyword) ||
+ `${user.first_name} ${user.last_name}`.toLowerCase().includes(keyword)
+ );
+});
+
+
return (
-
이메일: { }
-
토큰: { }
+
이메일: { email}
+
토큰: {token }
-
👥 유저 목록
+
유저 목록
setSearchTerm(e.target.value)}
/>
-
+ {filteredUsers.map((user) => (
+
+

+
{user.first_name} {user.last_name}
+
{user.email}
+
+ ))}
+
);
}