预期结果:
我正在尝试在发生突变后重新获取查询。这在任何地方都可以完美地工作,但是我对此特定查询有疑问。
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来查看缓存中的内容,则将其用于原始数据:
这是通过refetch实现的:
似乎两个数据的标识方式不同。
如果我将refetchQueries更改为此:
refetchQueries: () => [{query: alertsSettingsQuery, variables: {issuerRoleNames: null, receiverRoleNames: null}}]
它按预期工作。
我不明白为什么我需要在此处将变量显式设置为null,因为我不需要进行其他任何重新提取操作。
版本
apollo-client@2.3.4 react-apollo @ <2.1.5>