前提・実現したいこと
React + Reduxでカレンダーアプリを作成していたところ、コンソールで下記のエラーが出ました。
発生している問題・エラーメッセージ
TypeError: Cannot read property 'filter' of undefined
該当のソースコード
js
1import { isSameDay } from "./calendar"; 2 3export const setSchedules = (calendar, schedules) => 4 calendar.map(c => ({ 5 date: c, 6 schedules: schedules.filter(e => isSameDay(e.date, c)) 7 }));
js
1import { createCalendar } from "../../services/calendar"; 2import { connect } from "react-redux"; 3import CalendarBoard from "./presentation"; 4import { 5 addScheduleOpenDialog, 6 addScheduleSetValue 7} from "../../redux/addSchedule/actions"; 8import { setSchedules } from "../../services/schedule"; 9 10const mapDispatchToProps = dispatch => ({ 11 openAddScheduleDialog: d => { 12 dispatch(addScheduleOpenDialog()); 13 dispatch(addScheduleSetValue({ date: d })); 14 } 15}); 16 17const mapStateToProps = state => ({ 18 calendar: state.calendar, 19 schedules: state.schedules 20}); 21 22const mergeProps = (stateProps, dispatchProps) => { 23 const { 24 calendar: month, 25 schedules: { items: schedules } 26 } = stateProps; 27 28 const calendar = setSchedules(createCalendar(month), schedules); 29 30 return { 31 ...stateProps, 32 ...dispatchProps, 33 calendar, 34 month 35 }; 36}; 37 38export default connect( 39 mapStateToProps, 40 mapDispatchToProps, 41 mergeProps 42)(CalendarBoard);
js
1export const isSameDay = (d1, d2) => { 2 const format = "YYYYMMDD"; 3 return d1.format(format) === d2.format(format); 4};
js
1import { SCHEDULES_ADD_ITEM } from "./actions"; 2import dayjs from "dayjs"; 3 4const init = { 5items: [ 6{ 7id: 1, 8title: "テストtitle", 9date: dayjs(), 10location: "テストlocation", 11description: "テストdescription" 12} 13], 14isLoading: false 15}; 16 17const schedulesReducer = (state = init, action) => { 18const { type, payload } = action; 19 20switch (type) { 21case SCHEDULES_ADD_ITEM: 22return { 23...state, 24item: [...state.items, { ...payload, id: state.items.length + 1 }] 25}; 26default: 27return state; 28} 29}; 30 31export default schedulesReducer;
試したこと
schedulesが空ということだと思ったのですが、解決方法が分からず、、
怪しい箇所ありましたらご教示いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー