const Diary =()=>{
const nav=useNavigate();
const param = useParams();
const {onDelete}= useContext(DiaryDispatchContext);
const data = useContext(DiaryStateContext);
console.log(data);
const dataR = data.filter((item)=> String(item.id)===String(param.id));
const emotionId=dataR[0].emotionId;
const onClick=()=>{
if(confirm('삭제하시기를 원합니까?')){
onDelete(Number(param.id));
alert('삭제가 완료되었습니다');
nav('/',{replace:true});
}
}
// console.log(dataR);
return (
<div>
<Header title={'일기장 보기'} leftChild={<Button text={'< 뒤로가기'} onClick={()=> nav(-1)}></Button>} rightChild={<Button text={'편집하기'} onClick={()=>nav(`/edit/${param.id}`)}></Button>} ></Header>
<div>
<View emotionId={emotionId} dataR={dataR}></View>
</div>
<div>
<Button text={'삭제하기'} onClick={onClick}></Button>
</div>
</div>
)
}
export default Diary;
header 부분은 새 일기장 만들기와 동일하게 구축함과 동시에 왼쪽 버튼을 클릭하면 home으로 오른쪽 버튼을 클릭하면 편집하는 페이지로 이동하게 만듦View 컴포넌트에서 처리하게 만듦id로 찾은 데이터를 전달useContext로 받은 onDelete 함수를 이용해 삭제되는 기능 구현보완점
const emotionItem= emotionList.find((item)=> String(item.emotionId)===String(emotionId));
find 함수를 이용하여 찾자const useDiary=(id)=>{
const nav=useNavigate();
const data= useContext(DiaryStateContext);
const [curDiaryItem,setCurDiaryItem] = useState();
useEffect(()=>{
const currentDiaryItem= data.find((item)=> String(item.id)===String(id));
if(!currentDiaryItem){
window.alert('존재하지않는 일기입니다');
nav('/',{replace:true});
}
setCurDiaryItem(currentDiaryItem);
},[id]);
return curDiaryItem;
}
export default useDiary;
null 데이터 처리에 신경쓰자const View=({emotionId,dataR})=>{
const list = emotionList;
const data = list.filter((item)=> String(item.emotionId)===String(emotionId));
const emotionName = data[0].emotionName;
const date=getStringedDate(dataR[0].createdDate);
console.log(dataR[0].createdDate);
return(
<div>
<section>
<h4>오늘의 날짜</h4>
<input type="date" name="createdDate" id="" value={date} readOnly/>
</section>
<EmotionItem emotionId={emotionId} emotionName={emotionName}></EmotionItem>
<section>
<textarea name="" id="" value={dataR[0].content} readOnly></textarea>
</section>
</div>
)
}
export default View
View 컴포넌트이다input,textarea에서 readonly속성을 넣지 않으면 계속 오류가 뜬다