코드정리 Board

순9·2023년 12월 7일
0

리액트 게시판

목록 보기
44/54

Board

중복 코드, 사용하지 않는 라이브러리 정리

날짜
기존 코드

const modifiedData = useSelector((state: any) => state.boardModify.boarditem);
const moDataVar: any = modifiedData[Number(id)];

const userDates = new Date(moDataVar[0].timedata);

  const yesr = userDates.getFullYear();
  //Date 객체에서 월(Month)은 0부터 시작하기 때문에
  //제로 표시된 월을 구하려면 1을 더해주어야 합니다.
  const month = userDates.getMonth() + 1;
  const date = userDates.getDate();

  const userDate = `${yesr}.${month}.${date}`;

코드 수정

 function formatDate(dateSt: string) {
    const userDates = new Date(dateSt);
    return userDates.toLocaleDateString("ko-KR");
  }
  
  return(
   <div>{formatDate(item.timedata)}</div>
  )

toLocaleDateString1
toLocaleDateString2

데이터 출력
기존 코드
문제점
1. 조건을 건 상태에서 알맞은 페이지 이동는 되나 li안에 Link와 onClick 중복
2. 조건이 제대로 되어 있지않아서 onClick의 함수 내용대로 이동 됨

 const handleItemClick = (id: number) => {
    dispatch(selectBoard(id));
    const checkDb = boardItemState[id][0];

    if (boardItemModifyState?.[id]?.[0]?.isModified === true) {
      navigate(`/pagemo/${id}`);
    } else if (checkDb.isModified === false) {
      navigate(`/page/${id}`);
    }
  };
  
  
  return
   <ul>
              {getItemsForPage(currentPage).map((items: any, index) =>
                items.map((item: any, innerIndex: number) => {
                  const isModifiedData = boardItemModifyState[item.did];
                  // const isModifiedDataItem = isModifiedData.slice(-1);
                  if (isModifiedData?.[0]?.isModified === true) {
                    return (
                      <li
                        key={innerIndex}
                        onClick={() => handleItemClick(item.did)}
                      >
                        <Link to={`/page/${item.did}`}>
                          <section className="link_map">
                            <div>{index}</div>
                            <div>{isModifiedData[0].title}</div>
                            <div>{formatDate(item.timedata)}</div>
                          </section>
                        </Link>
                      </li>
                    );
                  } else {
                    return (
                      <li
                        key={innerIndex}
                        onClick={() => handleItemClick(item.did)}
                      >
                        <Link to={`/page/${item.did}`}>
                          <div className="link_map">
                            <div>{index}</div>
                            <div>{item.title}</div>
                            <div>{formatDate(item.timedata)}</div>
                          </div>
                        </Link>
                      </li>
                    );
                  }
                })
              )}
            </ul>

수정
1. onClick제거 조건을 데이터중에 true 인지 비교 하여 데이터 출력 false면 수정 전 true면 수정된 데이터
2. 데이터차 중첩으로 되어 있어고 수정된 데이터가 없으면 에러가 나기에 옵셔널 체이닝 연산자 활용 하여 에러 방지

  <ul>
              {getItemsForPage(currentPage).map((items: any, index) =>
                items.map((item: any, innerIndex: number) => {
                  const isModifiedData = modifyBoarddata[index]?.[innerIndex];
                  const isModifiedDatas = modifyBoarddata?.[innerIndex];

                  const lastisModifiedDataLengh = isModifiedDatas?.length - 1;
                  const lasteModified =
                    isModifiedDatas?.[lastisModifiedDataLengh];

                  if (isModifiedData?.isModified === true) {
                    return (
                      <li
                        key={innerIndex}
                        style={{ backgroundColor: "orange" }}
                      >
                        <Link to={`/page/${item.did}`}>
                          <section className="link_map">
                            <div>{index}</div>
                            <div>{lasteModified.title}</div>
                            <div>{formatDate(item.timedata)}</div>
                          </section>
                        </Link>
                      </li>
                    );
                  } else {
                    return (
                      <li key={innerIndex}>
                        <Link to={`/page/${item.did}`}>
                          <div className="link_map">
                            <div>{index}</div>
                            <div>{item.title}</div>
                            <div>{formatDate(item.timedata)}</div>
                          </div>
                        </Link>
                      </li>
                    );
                  }
                })
              )}
            </ul>
profile
1. 사용법 익히기 2. 원리가 뭔지 찾아보기 3. 원리를 공부하기

0개의 댓글