diff --git a/Jisoo-Repo b/Jisoo-Repo new file mode 160000 index 0000000..7c2625f --- /dev/null +++ b/Jisoo-Repo @@ -0,0 +1 @@ +Subproject commit 7c2625f827c9a8cf8087d3b17a347f47c36c17cd diff --git a/src/App.js b/src/App.js index 6e96c08..39f15a5 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ import "./App.css"; -import { useState } from "react"; +import React, { useState } from "react"; import Form from "./components/Form"; import List from "./components/List"; @@ -13,51 +13,55 @@ const initialDiaryData = localStorage.getItem("diaryData") function App() { const [diaryData, setDiaryData] = useState(initialDiaryData); - const [dateData, setDateData] = useState(initialDateData); + const [diaryText, setDiaryText] = useState(""); + const [diaryDate, setDiaryDate] = useState(""); + - // 일기 추가가 안 되는데 문제가 뭔지 모르겠음. id 문제인가? // * Create 기능 const handleSubmitDiary = (e) => { - e.preventDefault(); - console.log(e.dateValue) - console.log(e.diaryValue) - + // 새로운 일기 데이터, 날짜 데이터 let newDiary = { id: Date.now(), - date: diaryValue: diaryText, + diaryDate: diaryDate }; // 기존 일기에 새로운 일기, 날짜 추가 - setDiaryData((prev) => [...prev, newDiary]); + setDiaryData((prev) => [newDiary, ...prev]); localStorage.setItem("diaryData", JSON.stringify([newDiary, ...diaryData])); // 입력란에 있던 글씨 지워주기 setDiaryText(""); + setDiaryDate(""); }; + // 전체 삭제 + const handleRemoveAll = () => { + setDiaryData([]); + localStorage.setItem("diaryData", JSON.stringify([])); + }; // * html 부분 return (

한 줄 일기

+
diff --git a/src/components/Form.js b/src/components/Form.js index 4c5acdc..1849605 100644 --- a/src/components/Form.js +++ b/src/components/Form.js @@ -3,41 +3,38 @@ import React from "react"; export default function Form({ handleSubmitDiary, diaryText, - dateText, + diaryDate, setDiaryText, - setDateText, + setDiaryDate }) { const handleDiaryChange = (e) => { setDiaryText(e.target.value); }; - const handleDateChange = (e) => { - setDateText(e.target.value); + setDiaryDate(e.target.value);; }; + // * html 부분 return ( - + - + ); } diff --git a/src/components/List.js b/src/components/List.js index cab139a..8fc357e 100644 --- a/src/components/List.js +++ b/src/components/List.js @@ -1,114 +1,25 @@ -import React, { useState } from "react"; - -const List = ({ - id, - diaryValue, - dateValue, - diaryData, - setDiaryData, - dateData, - setDateData, -}) => { - const [isEditing, setIsEditing] = useState(false); - const [editedDateText, setEditedDateText] = useState(dateValue); - const [editedDiaryText, setEditedDiaryText] = useState(diaryValue); - - // 업데이트 할 때 입력 받는 부분? - const handleDateEditChange = (e) => { - setEditedDateText(e.target.dateText); - }; - - const handleDiaryEditChange = (e) => { - setEditedDiaryText(e.target.diaryText); - }; - - // * Update 기능 - const handleSubmit = (e) => { - e.preventDefault(); - - let newDiaryData = diaryData.map((data) => { - if (data.id === id) { - data.title = editedDiaryText; - } - return data; - }); - setDiaryData(newDiaryData); - localStorage.setItem("diaryData", JSON.stringify(newDiaryData)); - - let newDateData = dateData.map((data) => { - if (data.id === id) { - data.title = editedDateText; - } - return data; - }); - setDateData(newDateData); - localStorage.setItem("dateData", JSON.stringify(newDateData)); - - setIsEditing(false); - }; - - // * Delete 기능 - const handleRemove = (id) => { - let newDiaryData = diaryData.filter((data) => data.id !== id); - setDiaryData(newDiaryData); - localStorage.setItem("diaryData", JSON.stringify(newDiaryData)); - - let newDateData = dateData.filter((data) => data.id !== id); - setDateData(newDateData); - localStorage.setItem("dateData", JSON.stringify(newDateData)); - }; - - // * html 부분 - if (isEditing) { - /* isEditing이 true 즉, 수정 중인 데이터 */ - return ( -
-
- - -
- -
- - -
-
- ); - } else { - /* isEditing이 false 즉, 작성이 완료된 데이터 */ - return ( -
- - {dateValue} - - - {diaryValue} - - -
- - +import React from "react"; +import ListItem from "./ListItem"; + +const List = ({ diaryData, setDiaryData }) => { + return ( +
+
+
+ {diaryData.map((data) => ( + + ))}
- ); - } +
+ ); }; export default List; diff --git a/src/components/ListItem.js b/src/components/ListItem.js new file mode 100644 index 0000000..96d4554 --- /dev/null +++ b/src/components/ListItem.js @@ -0,0 +1,99 @@ +import React, { useState } from "react"; + +const ListItem = ({ id, diaryValue, diaryDate, diaryData, setDiaryData }) => { + const [isEditing, setIsEditing] = useState(false); + const [editedDiaryValue, setEditedDiaryValue] = useState(diaryValue); // Edit 할 때 입력되어 있는 부분 + const [editedDiaryDate, setEditedDiaryDate] = useState(diaryDate); + + + // 업데이트 할 때 입력 받는 부분? + const handleDiaryEditChange = (e) => { + const { name, value } = e.target; + if (name === "diaryValue") { + setEditedDiaryValue(e.target.value); + } else if (name === "diaryDate") { + setEditedDiaryDate(e.target.value); + } + }; + + // * Update 기능 (save 클릭했을 때 호출) + const handleSubmit = (e) => { + e.preventDefault(); + + let newDiaryData = diaryData.map((data) => { + if (data.id === id) { + data.diaryValue = editedDiaryValue; + data.diaryDate = editedDiaryDate; + } + return data; + }); + setDiaryData(newDiaryData); + localStorage.setItem("diaryData", JSON.stringify(newDiaryData)); + + setIsEditing(false); + }; + + // * Delete 기능 + const handleRemove = (id) => { + let newDiaryData = diaryData.filter((data) => data.id !== id); + setDiaryData(newDiaryData); + localStorage.setItem("diaryData", JSON.stringify(newDiaryData)); + }; + + // * html 부분 + if (isEditing) { + /* isEditing이 true 즉, 수정 중인 데이터 */ + return ( +
+
+ + +
+ +
+ + +
+
+ ); + } else { + /* isEditing이 false 즉, 작성이 완료된 데이터 */ + return ( +
+ {" "} + {/* 각 리스트들의 고유 key 가 필요함 */} + + {diaryDate} + + + {diaryValue} + +
+ + +
+
+ ); + } +}; + +export default ListItem; diff --git a/src/components/Lists.js b/src/components/Lists.js deleted file mode 100644 index e69de29..0000000