使用本机反应在 apollo 客户端中调用另一个查询 onComplete
Call another query onComplete of one query in apollo client using react native
I am getting invalid hook call for nested queries
const fetchNotifications = useNotificationsQuery({
variables: {
skip: SKIP,
take: TAKE,
},
async onCompleted(data){
let ids:Array<string>=[]
data?.notifications?.forEach((e)=>{
ids.push(e?.id+"")
})
setIds(ids)
readNotifications()
}
});
const readNotifications =()=> usereadNotifications({
variables: { notificationIds: ids},
async onCompleted(data){
console.log("res"+data)
}
})
并且 usereadNotifications 来自
export const readNotifications = gql` mutation readNotifications($notificationIds: [String]!) {
readNotifications(notificationIds: $notificationIds)
} `;
export const usereadNotifications = (options?: QueryHookOptions) => (
useMutation(readNotifications, options)
);
由于usereadNotifications
使用了一个钩子useMutation
,你不能把它包装成一个函数并尝试有条件地执行它,因为它打破了钩子的规则
但是使用 Mutation returns 你可以调用一个函数来触发突变
所以喜欢
const fetchNotifications = useNotificationsQuery({
variables: {
skip: SKIP,
take: TAKE,
},
async onCompleted(data){
let ids:Array<string>=[]
data?.notifications?.forEach((e)=>{
ids.push(e?.id+"")
})
setIds(ids)
readNotifications()
}
});
const [readNotifications] = usereadNotifications({
variables: { notificationIds: ids},
async onCompleted(data){
console.log("res"+data)
}
})
I am getting invalid hook call for nested queries
const fetchNotifications = useNotificationsQuery({
variables: {
skip: SKIP,
take: TAKE,
},
async onCompleted(data){
let ids:Array<string>=[]
data?.notifications?.forEach((e)=>{
ids.push(e?.id+"")
})
setIds(ids)
readNotifications()
}
});
const readNotifications =()=> usereadNotifications({
variables: { notificationIds: ids},
async onCompleted(data){
console.log("res"+data)
}
})
并且 usereadNotifications 来自
export const readNotifications = gql` mutation readNotifications($notificationIds: [String]!) {
readNotifications(notificationIds: $notificationIds)
} `;
export const usereadNotifications = (options?: QueryHookOptions) => (
useMutation(readNotifications, options)
);
由于usereadNotifications
使用了一个钩子useMutation
,你不能把它包装成一个函数并尝试有条件地执行它,因为它打破了钩子的规则
但是使用 Mutation returns 你可以调用一个函数来触发突变
所以喜欢
const fetchNotifications = useNotificationsQuery({
variables: {
skip: SKIP,
take: TAKE,
},
async onCompleted(data){
let ids:Array<string>=[]
data?.notifications?.forEach((e)=>{
ids.push(e?.id+"")
})
setIds(ids)
readNotifications()
}
});
const [readNotifications] = usereadNotifications({
variables: { notificationIds: ids},
async onCompleted(data){
console.log("res"+data)
}
})