Gre*_*rel 5 react-apollo apollo-client
我正在使用 v3 获取一些数据@apollo/client。在Chrome的网络选项卡(http结果)中,我可以看到它返回数据和错误(我并不担心该错误,我现在知道为什么会这样。):
{\n data: {workItems: [,\xe2\x80\xa6]},\xe2\x80\xa6},\n errors: [{message: "Error trying to resolve position."\n}\nRun Code Online (Sandbox Code Playgroud)\n但是在我的应用程序中,data返回未定义。
这是我的客户端配置:
\nexport const graphqlClient = new ApolloClient({\n cache: new InMemoryCache(),\n link: ApolloLink.from([\n onError(({ graphQLErrors, networkError }) => {\n if (graphQLErrors) {\n graphQLErrors.forEach(error =>\n console.log(\n `[GraphQL error]: ${JSON.stringify(error, null, 2)}`\n )\n )\n }\n if (networkError) {\n console.log(`[Network error]: ${networkError}`)\n }\n }),\n apolloLink\n ])\n})\nRun Code Online (Sandbox Code Playgroud)\n我的查询:
\ngql`\n query WorkItems($ppm: String) {\n workItems(where: { ppm: $ppm }) {\n ...WorkItemKanban\n }\n }\n ${workItemFragment.workItemKanban}\n`\n\nconst useWorkItemListDataGraphql = (args: {\n query: DocumentNode\n variables: { parent: string } | { ppm: string }\n}) => {\n const { variables, query } = args\n const { data, error, loading, refetch } = useQuery<\n { workItems: WorkItem[] },\n { parent: string } | { ppm: string }\n >(query, {\n pollInterval: 180000,\n variables\n })\n \n // data returns undefined, but error shows the same error as in Chrome's network tab\n return { ...data, error, loading, refetch }\n}\nRun Code Online (Sandbox Code Playgroud)\n我不知道从哪里开始找出问题所在。在没有错误的情况下加载数据是有效的,但我认为这不是正常行为,它应该始终加载与我在 Chrome 选项卡中看到的相同的数据。
\n正如Apollo 文档 - 错误策略中所解释的
默认情况下,错误策略将任何 GraphQL 错误视为网络错误并结束请求链
因此默认情况下,如果出现错误,Apollo 客户端就会返回。undefined
添加errorPolicy: 'all'查询选项或客户端默认选项可以解决该问题。
例子:
const { loading, error, data } = useQuery(MY_QUERY, { errorPolicy: 'all' });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |