RTK-Query中updateQueryData回调无控制台输出的问题排查
问题原因及解决方案
核心原因
你调用NotificationsApi.util.updateQueryData时,第二个参数传了undefined,但notificationsAll这个Query是**带参数(user_id)**的。RTK-Query需要通过这个参数匹配对应的缓存条目,找不到匹配的缓存时,就不会执行传入的回调函数(也就是你写的console.log('DISPATCH')所在的逻辑)。
修复代码
把updateQueryData的第二个参数替换成当前mutation拿到的user_id参数,让RTK-Query能定位到正确的缓存:
const patchResult = dispatch( NotificationsApi.util.updateQueryData('notificationsAll', { user_id }, (draft) => { console.log('DISPATCH'); // 补充删除对应通知的逻辑: const targetIndex = draft.findIndex(item => item.notification_id === notification_id); if (targetIndex !== -1) { draft.splice(targetIndex, 1); } }) )
额外验证点
如果修复后仍无效果,确认:
notificationsAllQuery已经被调用过,且存在对应的缓存数据(可通过Redux DevTools查看缓存状态)- 当前传入的
user_id和调用notificationsAll时使用的user_id完全一致
内容的提问来源于stack exchange,提问作者locklock123
相关产品推荐
相关产品推荐

