[英]saving data in localStorage with react-big-calendar
I'm implementing react-big-calendar in my toy project, and I want the events in the calendar to stay even after refreshing the page.我正在我的玩具项目中实现 react-big-calendar,我希望日历中的事件即使在刷新页面后也能保留。 I was planning to save the events in localStorage and then retrieve them back.
我打算将事件保存在 localStorage 中,然后将它们取回。 However, even after saving the events in localStorage, all the events are gone after page is rendered.
但是,即使将事件保存在 localStorage 中,页面渲染后所有事件都消失了。
export default function Calendar() {
const localizer = momentLocalizer(moment);
const [events, setEvents] = useState<any[]>([]);
const handleSelectSlot = useCallback(
({ start, end }) => {
const title = window.prompt("create an event");
if (title) {
setEvents((prev) => [...prev, { start, end, title }]);
}
},
[setEvents]
);
useEffect(() => {
localStorage.setItem("events", JSON.stringify(events));
}, [events]);
useEffect(() => {
if (events.length) {
localStorage.getItem("events" || "[]");
}
}, []);
const onClickRemoveEvent = (event: any) => {
const newEvents = events.filter((el) => el.start !== event.start);
setEvents([...newEvents, events]);
};
const { defaultDate, scrollToTime } = useMemo(
() => ({
defaultDate: new Date(),
scrollToTime: new Date(2000, 1, 1, 6),
}),
[]
);
const eventStyleGetter = (event: any) => {
console.log("eventGetter:", event.hexColor);
// const backgroundColor = "#" + event.hexColor;
const style = {
backgroundColor: "beige",
borderRadius: "0px",
opacity: 0.8,
color: "black",
border: "0px",
display: "block",
};
return {
style,
};
};
return (
<>
<S.Wrapper>
<S.ScheduleCalendar
localizer={localizer}
events={events}
selectable={true}
views={["month", "week", "day"]}
defaultDate={defaultDate}
onSelectSlot={handleSelectSlot}
onSelectEvent={onClickRemoveEvent}
scrollToTime={scrollToTime}
eventPropGetter={eventStyleGetter}
/>
</S.Wrapper>
</>
);
}
Is there a way I could save the events data?有没有办法保存事件数据?
You can store and retrieve events
data in localStorage
, but...您可以在
localStorage
中存储和检索events
数据,但是...
You have to remember that localStorage
does not preserve data types, meaning you must manually convert all event start
and end
dates back to JS Date
objects prior to putting them in your events
prop.您必须记住
localStorage
不保留数据类型,这意味着您必须手动将所有事件start
和end
日期转换回 JS Date
对象,然后再将它们放入events
道具中。 See Big Calendar's documentation on Understanding Dates请参阅大日历关于了解日期的文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.