emotion diary : edit diary page

This commit is contained in:
haerong22
2022-04-19 15:02:39 +09:00
parent 092d6e5d8d
commit ce60ed2411
4 changed files with 49 additions and 19 deletions

View File

@@ -99,7 +99,7 @@ function App() {
<Routes>
<Route path="/" element={<Home />} />
<Route path="/new" element={<New />} />
<Route path="/edit" element={<Edit />} />
<Route path="/edit/:id" element={<Edit />} />
<Route path="/diary/:id" element={<Diary />} />
</Routes>
</div>

View File

@@ -1,5 +1,5 @@
import { useNavigate } from "react-router-dom";
import { useContext, useRef, useState } from "react";
import { useContext, useEffect, useRef, useState } from "react";
import MyHeader from "./MyHeader";
import MyButton from "./MyButton";
@@ -55,14 +55,14 @@ const getStringDate = (date) => {
return `${year}-${month}-${day}`;
};
const DiaryEditor = () => {
const DiaryEditor = ({ isEdit, originData }) => {
const [content, setContent] = useState("");
const [emotion, setEmotion] = useState(3);
const [date, setDate] = useState(getStringDate(new Date()));
const contentRef = useRef();
const { onCreate } = useContext(DiaryDispatchContext);
const { onCreate, onEdit } = useContext(DiaryDispatchContext);
const navigate = useNavigate();
@@ -76,14 +76,32 @@ const DiaryEditor = () => {
return;
}
if (
window.confirm(
isEdit ? "일기를 수정하시겠습니까?" : "새로운 일기를 작성하시겠습니까?"
)
) {
if (!isEdit) {
onCreate(date, content, emotion);
} else {
onEdit(originData.id, date, content, emotion);
}
}
navigate("/", { replace: true });
};
useEffect(() => {
if (isEdit) {
setDate(getStringDate(new Date(parseInt(originData.date))));
setEmotion(originData.emotion);
setContent(originData.content);
}
}, [isEdit, originData]);
return (
<div className="DiaryEditor">
<MyHeader
headText={"새 일기쓰기"}
headText={isEdit ? "일기 수정하기" : "새 일기쓰기"}
leftChild={
<MyButton text={"< 뒤로가기"} onClick={() => navigate(-1)} />
}

View File

@@ -12,7 +12,7 @@ const EmotionItem = ({
}`}
onClick={() => onClick(emotion_id)}
>
<img src={emotion_img} />
<img src={emotion_img} alt="emotion_img" />
<span>{emotion_descript}</span>
</div>
);

View File

@@ -1,22 +1,34 @@
import { useNavigate, useSearchParams } from "react-router-dom";
import { useContext, useEffect, useState } from "react";
import { useNavigate, useParams } from "react-router-dom";
import { DiaryStateContext } from "../App";
import DiaryEditor from "../components/DiaryEditor";
const Edit = () => {
const [originData, setOriginData] = useState();
const navigate = useNavigate();
const [searchParams, setSearchParams] = useSearchParams();
const diaryList = useContext(DiaryStateContext);
const id = searchParams.get("id");
const mode = searchParams.get("mode");
console.log(id);
console.log(mode);
const { id } = useParams();
useEffect(() => {
if (diaryList.length >= 1) {
const targetDiary = diaryList.find(
(it) => parseInt(it.id) === parseInt(id)
);
if (targetDiary) {
setOriginData(targetDiary);
} else {
navigate("/", { replace: true });
}
}
}, [diaryList, id]);
return (
<div>
<h1>Edit</h1>
<p>이곳은 일기 수정 페이지 입니다.</p>
<button onClick={() => setSearchParams({ who: "kkk" })}>바꾸기</button>
<button onClick={() => navigate("/")}>홈으로</button>
<button onClick={() => navigate(-1)}>뒤로가기</button>
<h2>
{originData && <DiaryEditor isEdit={true} originData={originData} />}
</h2>
</div>
);
};