+ 본 검사는 간단하게 치매여부를 평가해 볼 수 있는 간이 도구입니다. 이
+ 결과로 치매를 결정할 수 없으며 반드시 전문의의 평가가 필요합니다.
navigate("/survey")}>
+
navigate("/survey")}
+ >
치매 진단하기
-
diff --git a/src/pages/UserUpdate.js b/src/pages/UserUpdate.js
new file mode 100644
index 0000000..be196f7
--- /dev/null
+++ b/src/pages/UserUpdate.js
@@ -0,0 +1,209 @@
+import React, { useEffect, useState } from "react";
+import UserController from "../api/users.controller";
+import { useForm } from "react-hook-form";
+import Button from "../component/Button";
+import Modal from "../component/Modal";
+import { useNavigate } from "react-router-dom";
+import { useDispatch, useSelector } from "react-redux";
+import { SET_PAGENAME } from "../redux/modules/PageName";
+import axios from "axios";
+
+const UserUpdate = () => {
+ const dispatch = useDispatch();
+ const userInfo = useSelector((state) => state.UserInfo);
+ const navigate = useNavigate();
+
+ const {
+ register,
+ handleSubmit,
+ watch,
+ formState: { errors },
+ reset,
+ } = useForm();
+
+ useEffect(() => {
+ dispatch({ type: SET_PAGENAME, pageName: "정보 수정" });
+ }, [dispatch]);
+
+ useEffect(() => {
+ reset(userInfo);
+ }, [userInfo, reset]);
+
+ const axiosInstance = axios.create({
+ baseURL: process.env.REACT_APP_SERVER_URL,
+ });
+ const onSubmit = async (data) => {
+ const accessToken = localStorage.getItem("AccessToken");
+ if (!accessToken) {
+ console.error("엑세스 토큰이 없습니다.");
+ return;
+ }
+
+ const userData = {
+ id: userInfo.userId,
+ username: data.username,
+ nickname: data.nickname,
+ email: data.email,
+ password: data.password,
+ birth: data.birth,
+ };
+
+ try {
+ const response = await axiosInstance.put("/users", userData, {
+ headers: {
+ AccessToken: `${accessToken}`,
+ },
+ });
+ console.log("성공");
+ navigate("/mypage");
+ } catch (error) {
+ console.log("정보 수정 중 오류", error);
+ }
+ };
+
+ const [nickname, setNickname] = useState("");
+ const nicknameRegister = register("nickname", {
+ required: "빈 칸 없이 작성해주세요.",
+ });
+
+ const handleChange = (event) => {
+ setNickname(event.target.value);
+ nicknameRegister.onChange(event);
+ };
+
+ const checkNickname = async () => {
+ if (nickname === "") return;
+ try {
+ const res = await UserController.checkNickname({ nickname });
+ setIsNicknameExist(false);
+ } catch (error) {
+ console.log(error);
+ setIsNicknameExist(true);
+ }
+ setIsModalOpen(true);
+ };
+
+ const [isModalOpen, setIsModalOpen] = useState(false);
+ const closeModal = () => {
+ setIsModalOpen(false);
+ };
+ const [isNicknameExist, setIsNicknameExist] = useState(false);
+
+ if (!userInfo) return null;
+
+ return (
+
+
+ {isModalOpen && isNicknameExist && (
+
+ )}
+ {isModalOpen && !isNicknameExist && (
+
+ )}
+
+ );
+};
+
+export default UserUpdate;
diff --git a/src/redux/config/configStore.js b/src/redux/config/configStore.js
index a46b0a3..5af27ed 100644
--- a/src/redux/config/configStore.js
+++ b/src/redux/config/configStore.js
@@ -4,12 +4,14 @@ import DiaryDate from "../modules/DiaryDate.js";
import DiaryInfo from "../modules/DiaryInfo.js";
import UserInfo from "../modules/UserInfo.js";
import PageName from "../modules/PageName.js";
+import fontSizeReducer from "../modules/fontSize.js";
const rootReducer = combineReducers({
DiaryDate,
DiaryInfo,
UserInfo,
PageName,
+ fontSize: fontSizeReducer,
});
const store = createStore(rootReducer);
diff --git a/src/redux/modules/DiaryDate.js b/src/redux/modules/DiaryDate.js
index e72b693..faee10a 100644
--- a/src/redux/modules/DiaryDate.js
+++ b/src/redux/modules/DiaryDate.js
@@ -1,6 +1,7 @@
export const CHANGE_YEAR = "CHANGE_YEAR";
export const CHANGE_MONTH = "CHANGE_MONTH";
export const CHANGE_DAY = "CHANGE_DAY";
+export const SET_DATE = "SET_DATE";
const initialState = {
year: parseInt(new Date().getFullYear(), 10),
@@ -45,7 +46,13 @@ export default function DiaryDate(state = initialState, action) {
...state,
day: action.number,
};
-
+ case SET_DATE:
+ return {
+ ...state,
+ year: action.year,
+ month: action.month,
+ day: action.day,
+ };
default:
return state;
}
diff --git a/src/redux/modules/UserInfo.js b/src/redux/modules/UserInfo.js
index 2cc9fcf..a5387fb 100644
--- a/src/redux/modules/UserInfo.js
+++ b/src/redux/modules/UserInfo.js
@@ -2,6 +2,7 @@ export const SET_USERINFO = "SET_USERINFO";
export const initialState = {
userId: "",
+ username: "",
email: "",
password: "",
nickname: "",
@@ -19,6 +20,7 @@ export default function UserInfo(state = initialState, action) {
return {
...state,
userId: action.userId,
+ username: action.username,
email: action.email,
password: action.password,
nickname: action.nickname,
diff --git a/src/redux/modules/fontSize.js b/src/redux/modules/fontSize.js
new file mode 100644
index 0000000..2bac966
--- /dev/null
+++ b/src/redux/modules/fontSize.js
@@ -0,0 +1,19 @@
+const SET_FONT_SIZE = "SET_FONT_SIZE";
+
+export const setFontSize = (size) => ({
+ type: SET_FONT_SIZE,
+ payload: size,
+});
+
+const initialState = "16px";
+
+const fontSizeReducer = (state = initialState, action) => {
+ switch (action.type) {
+ case SET_FONT_SIZE:
+ return action.payload;
+ default:
+ return state;
+ }
+};
+
+export default fontSizeReducer;
diff --git a/src/styles/SurveyStart.css b/src/styles/SurveyStart.css
deleted file mode 100644
index 4aa5a6b..0000000
--- a/src/styles/SurveyStart.css
+++ /dev/null
@@ -1,52 +0,0 @@
-#nameBox {
- background-color: #e0f4ff;
- height: 200px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- margin: 40px 0;
-}
-
-#nameBox p{
- margin: 0;
-}
-
-#txtBox {
- font-size: 20px;
- text-align: center;
-}
-
-#btnSurveyBox {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- width: 95%;
- height: 224px;
- border-radius: 20px;
- border: 4px solid #d9d9d9;
- margin: 30px auto;
-}
-
-#btn_survey {
- width: 90%;
- height: 64px;
- background-color: #e0f4ff;
- font-size: 25px;
- border-radius: 20px;
- border: 3px solid #d9d9d9;
- display: flex;
- justify-content: center;
- align-items: center;
- font-weight: bold;
-}
-
-#btn_before {
- width: 90%;
- height: 64px;
- font-size: 22px;
- display: flex;
- justify-content: center;
- align-items: center;
-}
\ No newline at end of file
diff --git a/src/styles/diary.css b/src/styles/diary.css
index 764b0db..b712406 100644
--- a/src/styles/diary.css
+++ b/src/styles/diary.css
@@ -46,7 +46,6 @@
background-color: #82aae3;
border-radius: 10px;
color: white;
- font-size: 20px;
font-weight: bold;
display: flex;
justify-content: center;
@@ -59,7 +58,6 @@
margin-bottom: 20px;
outline: 0;
border: 0;
- font-size: 15px;
/* height: auto; */
min-height: 200px;
resize: none;