Я новичок в Apollo, и мне что-то не хватает. У меня есть запрос на получение текущего зарегистрированного пользователя, которого я запускаю при загрузке страницы, и он выполняется из одного из моих самых главных компонентов (того же самого, который содержит также соответствующие logi c для response-router):
export const GET_USER = gql`
query {
me {
id
email
}
}
`
Затем, очень вложенные в дерево DOM, у меня есть кнопки входа и выхода, обе из которых запускают мутации, которые будут устанавливать или отменять сеанс для текущего пользователя. Но ... как мне обновить состояние в верхней части приложения на этом этапе?
Я прочитал это сообщение в блоге , в котором предлагается обернуть хуки Apollo в другие пользовательские хуки:
const useAuth = () => {
const { data: getUserData } = useQuery(GET_USER)
const [login, { data: loginData } = useMutation(LOGIN)
const [logout, { data: logoutData } = useMutation(LOGOUT)
// Should I find out here if I have a user id or not?
// It's doable, but not clean
return { login, logout, userId }
}
Мне очень неинтуитивно делать запросы таким образом, мне было легко понять наличие этих побочных эффектов в действиях Redux или MobX ... поэтому я перехожу к использованию клиента Apollo напрямую оттуда, даже если это не предложенное решение из документации Apollo.
Что я не понимаю?