reactjs - 返回上一个屏幕时执行 useQuery() 挂钩反应原生堆栈导航器
问题描述
我知道 React 中的固定规则之一是您不能在功能组件的方法内执行任何钩子,甚至不能在其他钩子(如 useEffect 钩子)内执行任何钩子。它必须在组件本身的主体中执行。
所以今天在开发一个测验应用程序时,我遇到了这样一种情况,在堆栈导航器上通过一个屏幕后,我想通过单击后退按钮再次返回该屏幕。但是这一次,我想使用 Apollo Client 提供的 useQuery 钩子使用来自 graphql 查询的数据来修改上一个屏幕上的信息。
isFocused
我可以使用道具上的属性检测上一个屏幕是否是焦点。如果它发生变化,那么我将使用 useQuery 再次获取数据。
我可以这样做:
React.useEffect(() => {
//how do I fetch data from here using useQuery if React prohibits me to use useQuery here?
}, [props.isFocused]);
所以这是我的问题,有没有办法解决这个问题?我会很感激你的回应。
解决方案
在 reactjs 上发现了一个类似问题的问题,我在其中加载了一个带有数据的页面,然后转到另一个页面以将文档添加到数据库中,然后在完成后返回到原始页面。
更改默认设置fetchPolicy
以network-only
确保我始终获得最新的可用数据。
const { loading: loadingData, error, data } = useQuery(GetData, {
fetchPolicy: "network-only"
参考:https ://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy
推荐阅读
- mysql - 如何从具有两个条件的行中选择一些列?
- java - 编写异常处理程序
- c# - 从 Postman 获取请求在 ASP.NET 控制器中不起作用
- php - 如何将 Array Key 名称与另一个 Array Key 名称匹配
- android-studio - 如何在 Android Studio 3.4 中使用 Run Anything
- kubernetes - CSINodeDriver 无效对象没有附加属性
- css - 检查 CSS 属性选择器值是否匹配,而不对实际值进行硬编码
- ios - 如何打开带有选定单元格标题的导航控制器
- javascript - JavaScript 中 Object.defineProperty() 的奇怪行为
- mysql - 更新语句可以使用插入意图锁吗?