Cru*_*ink 13 apollo reactjs react-apollo apollo-client
这肯定是用户错误,但我有一个带有简单currentUser查询的应用程序,该查询在 JWT 中查找 id,查找它并返回相应的用户。
我可以查看 devtools 并看到它在缓存中__ref:User:19
export const CURRENT_USER_QUERY = gql`
query{
currentUser {
id
fullName
email
}
}
`
Run Code Online (Sandbox Code Playgroud)
但在我的组件中,当我const { currentUser } = client.readQuery({ query: CURRENT_USER_QUERY });这样做时(间歇性地)会爆炸,因为:
Cannot destructure property 'currentUser' of 'client.readQuery(...)' as it is null.
Run Code Online (Sandbox Code Playgroud)
用户:19 存在并且是我需要的所有内容。我点击重新加载,同一页面就可以工作了。
我在客户端中将默认错误策略设置为“全部”。
这是客户端的版本3.3.11。Chrome v88.04,物有所值。反应 17.01。
我在这里错过了什么吗?如果该项目在缓存中,是否应该不同步(并且可靠地)返回值?
有没有更好的方法来处理这种情况?我正在尝试让这个应用程序不再将内容存储在 redux 或某些上下文提供程序中,因为它已经由 Apollo 处理。让一堆不同的东西来处理这个责任似乎是多余的。
.readQuery()我昨晚遇到了问题。尽管逻辑是正确的,但我每次都返回 null。.readQuery()我在导入到 React 页面的组件中进行调用。
最终我的问题是,我没有更新我在“父”反应页面中所做的与组件中的查询相同的查询。
我不知道这是否是你遇到的同样的问题,但我想我会把它留在这里,以供永久和展望。
我面临着同样的问题。我是这样修复的:
const existingData = cache.readQuery({
query: GET_CONTRACT,
variables: {
...variables, // fixed: passing the same reference to variables
},
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9264 次 |
| 最近记录: |