reactjs - Apollo GraphQL:为什么子组件中的 useMutation 会触发父组件中的重新渲染
问题描述
我正在使用“@apollo/client”对社交媒体应用程序做出反应。我的组件结构为...
MainView.js > PostsView.js > PostCard.js > LikeButton.js
- MainView.js:有使用 useQuery 的 FETCH_POSTS_QUERY
const { loading, data: { getUsers: users } = {}, error } = useQuery(GET_USERS_QUERY);
- LikeButton.js:具有使用 useMutation 的 LIKE_POST_MUTATION。
const [likePost] = useMutation(LIKE_POST_MUTATION, { variables: { postId: post.id } })
MainView 获取帖子并将帖子显示在 PostCard 组件中,该组件具有 LikeButton 组件,其中发生了类似的帖子突变。
每次调用 likePost() 时,PostCard 都会渲染,然后 MainView.js(父组件)会立即重新渲染,这是为什么呢?触发 MainView.JS 组件的突变是什么?另外,我注意到当我添加fetch-policy: no-cache
到 GET_USERS_QUERY 时,MainView.js 不会重新呈现。我没有对 LIKE_POST_MUTATION 中的缓存做任何事情,所以我不确定那里的连接是什么。此外,仅当调用 likePost 时才会发生重新渲染。
解决方案
推荐阅读
- opencv - 编辑并自动屏蔽图像上的信用卡号(Windows 环境)
- web - PWA 是否可链接到 Playstore
- sql - 从 SQL Server 中的日期检索年份和周数
- android - 关闭选项卡时,Android Studio 3.2.1 布局编辑器预览消失
- node.js - 在 NodeJS 中记录 API 调用
- android - Google Fit API 的 Datapoint 的 AppPackageName 与其他应用同步后更改
- reactjs - Create React App 模板中的测试脚本中的“it”函数是什么?
- selenium - Cucumber 中的逻辑 AND 和 OR 标签
- algorithm - 如何处理包含偶数个元素的子集?(使用分而治之找到峰值问题)
- javascript - 如何通过 AJAX 响应将值推送到数组中?