RefetchQueries无法正确更新商店

时间:2019-01-02 14:07:34

标签: reactjs graphql apollo apollo-client

预期结果:

我正在尝试在发生突变后重新获取查询。这在任何地方都可以完美地工作,但是我对此特定查询有疑问。

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实现的:

refetch datas

似乎两个数据的标识方式不同。

如果我将refetchQueries更改为此:

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

它按预期工作。

我不明白为什么我需要在此处将变量显式设置为null,因为我不需要进行其他任何重新提取操作。

版本

apollo-client@2.3.4 react-apollo @ <2.1.5>

0 个答案:

没有答案