收到来自订阅的新数据后,我无法更新分页消息。
我有一个主要组件PrivateChannel
用来获取消息:
#import '../../ApolloClient/fragments/User/basicUserInfo.gql'
#import '../../ApolloClient/fragments/Message/basicMessageInfo.gql'
#import '../../ApolloClient/fragments/common/channelMember.gql'
query messages($input: MessagesInput!) {
messages(input: $input) {
cursor {
prev
next
limit
}
results {
...BasicMessageInfo
author {
user {
...BasicUserInfo
}
channelMember {
...ChannelMember
}
}
}
}
}
在Sidebar
中,我有频道成员列表,当用户加入或离开频道或其属性之一(如muted
)更改时,该列表会通过订阅进行更新。由action
字段确定,该字段接受3个值added
,deleted
,edited
。
#import '../../ApolloClient/fragments/common/channelMember.gql'
#import '../../ApolloClient/fragments/User/basicUserInfo.gql'
subscription channelMemberListUpdated($input: ChannelMemberListUpdatedInput!) {
channelMemberListUpdated(input: $input) {
action
channelMember {
...ChannelMember
}
}
}
和ChannelMember
fragment ChannelMember on ChannelMember {
blocked
muted
role
channelId
memberId
}
typePolicies: {
ChannelMember: {
keyFields: ['channelId', 'memberId'],
},
}
我想实现什么?通过订阅在ChannelMember
中更新Sidebar
时,我希望新数据能够反映在PrivateChannel
组件中。
当PrivateChannel
字段为action
时,一切工作正常,对于edited
组件而言,但对于其他组件则无效。
我有什么可能解决这个问题?
我使用Apollo Client 3。