RefetchQueries не корректно обновляет магазин - PullRequest
0 голосов
/ 02 января 2019

Ожидаемый результат:

Я пытаюсь повторить запрос после мутации.Это прекрасно работает везде, но у меня есть проблема с этим конкретным запросом.

const alertsSettingsQuery = gql`
    query alertsSettingsQuery($issuerRoleNames: [String], $receiverRoleNames: [String]) {
       alertsSettings(issuerRoleNames: $issuerRoleNames, receiverRoleNames: $receiverRoleNames) {
          ...
       }
     }
`;

Компонент, запрашивающий исходные данные без переменных:

export default compose(
    graphql(alertsSettingsQuery, {name: "alertsSettingsData"}),
    ...,
)(Administration);

Компонент, повторно загружающий данные без переменных:

mutate({
  variables: updatedAlert,
  refetchQueries: () => [{query: alertsSettingsQuery}]
}).then((data) => {
  ...
}).catch(err => {
  ...
});

Фактический результат:

Если я проверяю вкладку сети, данные корректно обновляются и обновляются, но компонент не получает обновленные данные.

Если я используюApollo Devtools, чтобы увидеть, что находится в моем кеше, у меня есть это для исходных данных:

initial datas

И это из повторного поиска:

refetch datas

Кажется, что эти два идентификатора не идентифицируются одинаково.

Если я изменю свои запросы на повторные запросы на это:

refetchQueries: () => [{query: alertsSettingsQuery, variables: {issuerRoleNames: null, receiverRoleNames: null}}]

Это работает, как и ожидалось.

Я не понимаю, почему мне нужно явно установить переменные на ноль здесь, так как я не делаю этого для любого другого повторного поиска.

Версия

apollo-client@2.3.4 Reaction-Apollo @ <2.1.5>

...