Как использовать актуальные данные в React useEffect при отсутствии зависимостей?
У меня есть useEffect, который должен вызваться строго один раз при рождении компонента. В нем я подписываюсь на определенное событие, и как только событие происходит, я вызываю функцию saveData (внутри useEffect). Но так как useEffect выполнился один раз (при рождении компонента), он из замыкания берет те данные (userId и schedule), которые были при первом рендере и вызывает функцию именно с ними, хотя данные уже поменялись.
const saveData = useCallback(() => {
postSchedule(state.userId as string, state.schedule)
dispatch(actions.setEditMode(false))
}, [state.userId, state.schedule])
const assistantRef = useRef<ReturnType<typeof createAssistant>>()
const assistantStateRef = useRef<AssistantState>({} as AssistantState)
useEffect(() => {
assistantRef.current = initializeAssistant(() => assistantStateRef.current)
initAssistant(dispatch, assistantRef.current as ReturnType<typeof createAssistant>, assistantStateRef.current, saveData)
}, [])
Зависимости прописать я не могу, так как мне нужно чтобы useEffect вызывался лишь единожды, иначе у меня лишние подписки происходят. Отписываться в return если что не вариант (это специфические подписки).
Есть ли какой-то самый адекватный способ решения этой проблемы или userId и schedule в useRef нужно загнать чтобы потом их как рефы вызвать?