first_project DAY+9

2022. 1. 3. 14:58
반응형

KEEP 오늘의 좋았던 경험

  • 책장에 책 색깔 렌더링 될 때마다 색깔 변하던 것 안바뀌게 수정. 색깔 배열을 만들어서 배열안에 있는 색깔을 랜덤하게 추출 해서 styled component에 props로 전달해 주었는데, 매번 랜덤한 색깔을 넘겨주다보니 렌더링 될때마다 색깔이 변하는 현상이 발생했다.
//아래처럼 해줘서 매번 같은 색깔이 들어가도록 해줘서 색깔이 매번 바뀌는 것을 고정된 색깔로 해주었다.
const color = [
    "#e76438",
    "#4f8f91",
    "#e48365",
    "#2c5854",
    "#eebb3a",
    "#3a506b",
  ];
//중략
{shelf.map((book, idx) => (
            <ShelfBook
              key={idx}
              page={book.pages}
              color={color[idx % 6]}
              onClick={() => reviewHandler(book)}
              idx={idx}
            >
              <span>
                {book.title.length >= 16
                  ? book.title.slice(0, 16) + " ..."
                  : book.title}
              </span>
            </ShelfBook>
          ))}
  • Notification 알림 메시지가 먼저 사라지는 현상 수정.
// 기존에는 key값에 map 고차함수 두번째 인자인 index를 넣어줬는데, 
// 그 부분 때문에 key(index)값이 같아지는 현상이 생겨 한 Notify div에 같은 알림 메시지를 넣어줘서
// 앞의 알림 메시지가 사라지면 뒤에 나온 알림창에는 메시지가 없는 현상이 발생했다.
// 그래서 액션에 notify 함수를 만들어줄 때 key값에 넣어줄 랜덤한 uuid를 만들어서 보내줘서 
// 한개의 박스에 하나의 메시지를 할당해주게되어 앞의 문제를 해결할 수 있었다.

// 알림창이 사라질 때 애니메이션을 걸어줄게 아니면 굳이 message가 사라지는 time을 주지 않고 
// dequeueNotification으로 인해 Notification 자체를 사라지게 해주어도 된다.

//NotificationCenter
return (
    <>
      {state.notifications.map((noti) => (
        <Notification
          key={noti.uuid}
          message={noti.message}
          link={noti.link}
          time={noti.dismissTime}
        />
      ))}
    </>
  );

//Notification
useEffect(() => {
    let mounted = true;
    setTimeout(() => {
      if (mounted) {
        setIsFading(true);
      }
    }, time);

    return () => {
      mounted = false;
    };
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

return (
    <Notify>
      <span className={`message ${isFading ? "fade" : ""}`}>{message}</span>
      <span
        className={`link ${isFading ? "fade" : ""}`}
        onClick={navigateHandler}
      >
        {link}
      </span>
    </Notify>
  );
  • 서비스 구현 완료

PROBLEM 고쳐나갈 경험

  • CSS 반응형, 애니메이션 효과줘서 디자인을 좀 더 발전 시키고싶다.
  • 책장 페이지를 구현했는데, 여러번 넘기다보면

Over 200 classes were generated for component styled.div with the id of "sc-jIkXHa". Consider using the attrs method, together with a style object for frequently changed styles. Example: const Component = styled.div.attrs(props => ({ style: { background: props.background, }, }))width: 100%; 이런 에러메시지가 콘솔창에 뜬다. 메시지에 나와있는대로 attrs를 사용해서 만들어주었는데도 똑같은 현상이 발생했다. 왜 이런건지 조금 더 찾아보고, attrs가 무슨 의미인지를 좀 알아볼 필요가 있을 것 같다. 그리고 페이지를 구현할 때 내가 한 방법으로 구현하는 것이 맞는지도 알아볼 필요가 있다.

TRY 시도해볼 일

  • 발표자료 피피티 완성하기
  • redux-persist (상태를 로컬 스토리지나 세션에 저장할 수 있도록 도와주는 모듈(?) → 로그인 상태 유지)
반응형
LIST

'코드스테이츠 수강 TIL > First Project' 카테고리의 다른 글

first_project DAY+10 마무리  (0) 2022.01.03
first_project DAY+8  (0) 2022.01.03
first_project DAY+7  (0) 2022.01.03
first_project DAY+6  (0) 2022.01.03
first_project DAY+5  (0) 2022.01.03

BELATED ARTICLES

more