Метод Apollo-update () вызывается дважды, оба раза с оптимистическими / поддельными данными
я полностью застрял на проблеме Apollo, для которой я открыл проблему GitHub и имел нулевой ответ.
Я вызываю мутацию Аполлона, используя optimisticResponse
. То, как это должно работать, как я понимаю, это update()
вызывается дважды: сначала с оптимистическими данными, затем снова с фактическими данными, поступающими из сети.
но по какой-то причине мой код не работает как этот. Я получаю два update()
звонки, оба с оптимистичным данные.
вот РЕПО, которое демонстрирует это поведение:https://github.com/ffxsam/apollo-update-bug
- пряжа & & пряжа dev
- открыть в браузере, откройте консоль
- Введите текст и нажмите Enter
- повторите выше
- обратите внимание на ошибку в консоли о дубликатах ключей. Это происходит из-за временного ID "??"не заменяется настоящим UUID (необязательно) вы можете открыть вю DevTools, если доступно, и проверьте данные, чтобы увидеть, что это неправильно
1 ответов
я копал, и я думаю, что нашел источник проблемы. К сожалению, у меня нет решения.
короче, проблема может быть с сетевой ссылкой под названием OfflineLink
используется aws-appsync
.
объяснение
aws-appsync
имеет Аполлолинк под названием OfflineLink
Это вмешивается в С optimisticResponse
как будто это был результат исполнения!
update
на второй раз С результатом, который на самом деле optimisticResponse
.OfflineLink
вызывает наблюдателя complete
что разрешает ваше обещание.console.log('done!'...
между тем, OfflineLink
предотвращает оригинал мутация от даже отправки запроса, и новая мутация генерируется и отправляется с параметрами, которые вы ему дали.