미라클 메모리const { id } = useParams();
const diaryList = useContext(DiaryStateContext);
useEffect(() => {
if (diaryList.length >= 1) {
const targetDiary = diaryList.find(
(list) => parseInt(list.id) === parseInt(id)
);
}
}, [id, diaryList]);
useParams를 통해서 현재 URL에 있는 id값을 가져온다.
<Route path="/edit/:id" element={<Edit />} />
Array.prototype.find() - JavaScript | MDN


if (diaryList.length >= 1) {
const targetDiary = diaryList.find(
(list) => parseInt(list.id) === parseInt(id)
);
if (targetDiary) {
setOriginData(targetDiary);
} else {
navigate("/", { replace: true });
}
}
}, [id, diaryList]);
이중 조건문으로 targetDiary값을 조회한다.
만약 targetDiary 참이라면? OriginData에 선별해온 상태값을 저장한다
만약 targetDiary 거짓이라면? 거짓이라면 navigate훅을 사용하여 홈으로 되돌린다. 이때 replace:true 속성을 더해주어 뒤로 돌아가지 못하게 막는다.
const [originData, setOriginData] = useState();