@graphql_ru
GraphQL — русскоговорящее сообщество

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 25 августа 2017 г.

07:58:05 ДП
User 249356274
Привет всем. Кто нибудь испытывал проблемы с react-apollo, при вызове resetStore на клиенте?
07:59:09 ДП
User 141958411
User 249356274
Привет всем. Кто нибудь испытывал проблемы с react-apollo, при вызове resetStore на клиенте?
Да, есть проблема. Зависает на loading
08:00:48 ДП
User 141958411
User 141958411
Да, есть проблема. Зависает на loading
https://github.com/apollographql/apollo-client/issues/1186#issuecomment-324256941
github.com/apollographql/apollo-client/issues/1186
Hi, this is very indeterministic behaviour. But sometimes the loading flag never get updated to true false. I can see that data are correctly received by client in the console. Any idea how can I d...
08:01:32 ДП
User 141958411
но в apollo 2.0 которая пока в alpha  этой проблемы уже нет
08:06:30 ДП
User 249356274
У меня в общем такая проблема. После логаута вызываю ресет и в этот момент компонент не успевает размонтироваться и аполло делает рефетч, который мне уже не нужен. Самое интересное, что если делаю диспатч логаута из консоли браузера, то все работает как нужно
08:08:51 ДП
User 249356274
User 141958411
Да, есть проблема. Зависает на loading
С этим тоже столкнулся, вроде как notifyOnNetworkStatusChange решило проблему
08:13:17 ДП
User 141958411
User 249356274
У меня в общем такая проблема. После логаута вызываю ресет и в этот момент компонент не успевает размонтироваться и аполло делает рефетч, который мне уже не нужен. Самое интересное, что если делаю диспатч логаута из консоли браузера, то все работает как нужно
handleClickSignOut = async event => {
    event.preventDefault()
    await this.props.client.resetStore()
    await this.props.signOutSuccess()
    this.props.history.replace('/')
  }
08:28:56 ДП
User 249356274
В этом случае он все равно сделает рефетч
08:29:28 ДП
User 141958411
а если сначала диспатчч?
08:29:44 ДП
User 141958411
а потом resetStore
08:32:35 ДП
User 141958411
хотя ты вроде так и делаешь
08:35:13 ДП
User 249356274
В моем случае все равно рефетч. Я использую redux-auth-wrapper для проверки доступа к компоненту. По логике после диспатча, компонент должен размонтироваться и вызов resetStore должен выполняться как мне нужно. Но unmount происходит почему после вызова resetStore
08:35:59 ДП
User 249356274
А из-за этого успевает запуститься рефетч
08:37:22 ДП
User 141958411
наверное что то с асинхронностью связанное
08:37:34 ДП
User 141958411
нужно then или await
08:39:47 ДП
User 249356274
User 141958411
наверное что то с асинхронностью связанное
Вся фишка в том, что при логауте все действия синхронны.
09:03:52 ДП
User 141958411
User 249356274
В моем случае все равно рефетч. Я использую redux-auth-wrapper для проверки доступа к компоненту. По логике после диспатча, компонент должен размонтироваться и вызов resetStore должен выполняться как мне нужно. Но unmount происходит почему после вызова resetStore
Может ещё с порядком применения hoc connect и graphql быть связано
09:23:54 ДП
User 249356274
Проблема реально с асинхронностью.  Только не могу понять откуда эта асинхронность возникает.
handleLogout(e) {
    e.preventDefault()
    Promise.resolve(this.props.userLogout()).then(() => {
        client.resetStore()
    })
} После этого все заработало