개인프로젝트 fanPage-2

김현철·2023년 11월 14일
post-thumbnail

결과물

Redux

import mockData from "data/mockdata.json";

const LOCAL_KEY = "letters";
const MODIFY_LETTER = "modify/letter";
const ADD_LETTER = "add/letter";
const DELETE_LETTER = "delete/letter";

export const modifyLetter = (paylod) => {
  return {
    type: MODIFY_LETTER,
    paylod
  };
};
export const addLetter = (paylod) => {
  return {
    type: ADD_LETTER,
    paylod
  };
};
export const deleteLetter = (paylod) => {
  return {
    type: DELETE_LETTER,
    paylod
  };
};

const localLetters = JSON.parse(localStorage.getItem(LOCAL_KEY))
  ? JSON.parse(localStorage.getItem(LOCAL_KEY))
  : mockData;

if (!localLetters) {
  localStorage.setItem(LOCAL_KEY, JSON.stringify(mockData));
}

export const modulesLetters = (state = localLetters, action) => {
  switch (action.type) {
    case MODIFY_LETTER: {
      const newState = state.map((letter) => {
        if (letter.id === action.paylod.id) {
          return { ...action.paylod };
        }
        return letter;
      });
      localStorage.setItem(LOCAL_KEY, JSON.stringify(newState));

      return newState;
    }
    case ADD_LETTER: {
      localStorage.setItem(LOCAL_KEY, JSON.stringify([...state, { ...action.paylod }]));

      return [...state, { ...action.paylod }];
    }
    case DELETE_LETTER: {
      console.log(action.paylod);
      const newState = state.filter((letter) => letter.id !== action.paylod);
      localStorage.setItem(LOCAL_KEY, JSON.stringify(newState));
      return newState;
    }
    default: {
      return state;
    }
  }
};

작업후기

  • 스타일드컴포넌트를 어떻게 해야 효율적으로 쓸 수 있는지 감을 못잡았다.
  • component폴더의 종류별 재사용 가능한 styled컴포넌트를 넣어두려고했으나 호락호락하지않았다.
  • 중첩라우팅을 사용했는데 usenavigate로 이동 시 쿼리를 지워버린다 쿼리값을 유지한채로 이동하고싶었는데 방법을 찾지못했다 결국 usenavigate에 현재 쿼리값 + 이동할 url을 넣어야했다.
  • 디자인의 통일성이나 색감 같은건 역시나 어렵다..
  • 캐러샐을 만드는건 쉬우나 반응형으로 만들기는 아직 어려운 것 같다.
  • 반응형을 구현하진않았지만 초기 구현단계에서 고려해야하는데 그부분이 참 어려운것 같다.

추가해야하는 기능

  • url에 쿼리값으로 id를 추가하여 modal을 띄웠는데 페이지 이동시 애니메이션을 추가하고싶다.
  • 반응형
  • 페이지 간 이동시 스크롤 탑시켜줘야할 것 같다.
  • 캐러샐에서 동영상 재생 시 화면에 보이지않을때는 자동으로 동영상을 멈춰주어야 할 것 같다.
  • 인풋 값 체크로직 추가해야함

#오늘의 에너지#Git

0개의 댓글