개인프로젝트 진행
└ 코드 정리
└ localstorage 저장
localStorage.setItem('key', value)
JSON.stringify()
해주기const saveToLocalStorage = (updatedFanLetter) => {
localStorage.setItem('fanLetters', JSON.stringify(updatedFanLetter));
};
const FanLetterReducer = (state = initialState, action) => {
switch (action.type) {
case ADD_FANLETTER:
const newFanLetterList = [action.payload, ...state];
saveToLocalStorage(newFanLetterList);
return newFanLetterList;
case EDIT_FANLETTER:
const editedFanLetterList = state.map((item) =>
item.id === action.payload.id
? { ...item, content: action.payload.editInput }
: item
);
saveToLocalStorage(editedFanLetterList);
return editedFanLetterList;
case DELETE_FANLETTER:
const deletedFanLetterList = state.filter(
(item) => item.id !== action.payload
);
saveToLocalStorage(deletedFanLetterList);
return deletedFanLetterList;
case SET_FANLETTER:
return action.payload;
default:
return state;
}
};
localStorage.getItem('key')
JSON.parse()
const FanLetterList = () => {
const dispatch = useDispatch();
let fanLetters = useSelector((state) => state.FanLetterReducer);
const selectedMember = useSelector((state) => state.SelectedMemberReducer);
const filteredLetters = fanLetters.filter((item) =>
selectedMember !== '전체' ? item.writedTo === selectedMember : true
);
useEffect(() => {
const storedFanLetters = JSON.parse(localStorage.getItem('fanLetters'));
if (storedFanLetters) {
dispatch(setFanLetters(storedFanLetters));
}
}, [dispatch]);
return (
<ScFanLetterItems>
(...)
</ScFanLetterItems>
);
};
useEffect(() => {
if (editInputShown) {
editInputRef.current.focus();
}
}, [editInputShown]);
<textarea
ref={editInputRef}
value={editInput}
onChange={editInputHandler}
/>
readme 쓰는 것도 연습이 필요하겠다 싶어서 이번 프로젝트 깃헙에 넣어봤다
대단한 내용을 쓴 것도 아닌데 시간을 꽤 잡아먹었다ㅎㅎ
가능하다면 배포까지 해서 제출해야지
이번 과제에서 모달은 결국 포기하기로 했다
컴포넌트마다 따로 만들자니 비효율적이기도 하고
상황에 따라 늘어나는 버튼 종류와 함수들을 어떻게 만들지 감이 오질 않았다
redux 에서 전역에서 쓰이는 모달로도 만들고 싶었는데 아직은 무리였나보다
나중에 다시 도전해봐야지!
늘 그랬듯.. 계획보다 못미치는 정도지만
주말에 공부를 했다는 점에 의의를.. 🥴