【发布时间】:2018-05-19 21:51:29
【问题描述】:
根据这些 Apollo docs,设置 all 的 error-policy 应该使 GraphQL 响应的 errors 数组可用于我的 Apollo 包装的 React 组件“因此 [我的] UI 可以使用它们。”我的应用是通用的,所以我使用此策略很重要,这样错误不会阻止应用完全呈现。
问题是,即使我的浏览器开发工具在服务器响应中显示 errors 数组,我也无法在我的 React 组件的 props 中访问它。同样,props.data.error 始终未定义。这是为什么呢?
// Component
import React from 'react';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';
const Cart = (props) => {
console.log(props.errors); // undefined
console.log(props.data.error); // undefined
console.log(props.data.cart); // null
return <div>Foo.</div>;
};
export default graphql(gql`
query CartQuery {
cart {
products {
_id,
name
}
}
}
`, { options: { errorPolicy: 'all' } })(Cart);
// Resolver
cart: (root, args, context) => {
throw new Error('foo');
}
// Browser network tab response
{"data":{"cart":null},"errors":[{"message":"foo","locations":[{"line":2,"column":3}],"path":["cart"]}]}
【问题讨论】:
标签: javascript graphql apollo react-apollo