我正在制作一个调度程序应用程序,为此我正在使用日历组件库。用法看起来像这样
<Kalend
onEventClick={onEventClick}
onNewEventClick={onNewEventClick}
events={bookings}
initialDate={new Date().toISOString()}
hourHeight={60}
initialView={CalendarView.WEEK}
disabledViews={[CalendarView.DAY]}
timeFormat={'24'}
weekDayStart={'Monday'}
calendarIDsHidden={['work']}
language={'en'}
/>
我的问题是我在处理程序函数onEventClick
中访问当前用户的userId。这个userId是由自定义钩子异步提供的,在初始呈现时是undefined
。一旦userId更新,它就不会在函数范围内更新。我还尝试使用useCallback钩子与userId在深度数组,但与相同的结果。
我的handler函数:
const onEventClick = (data: any) => {
setPopupData(data)
setEventClicked(true)
if (userProfile?.id === data.ownerId) {
setModalOpen(true)
} else {
setPreviewOpen(true)
}
};
当控制台在组件范围内记录userId时,它会更新(由于Hook最终获取userProfile),但在处理程序函数中它仍然是undefined
您应该可以使用useRef - https://reactjs.org/docs/hooks-reference.html#useref
当你稍后用像
这样的东西分配userId时const userIdRef = useRef()
// somewhere in your code
userIdRef.current = userId
,你将能够在onEventClick函数中访问它。