首页 文章

relay / graphql:可空响应或捕获查询错误的方法

提问于
浏览
0

在relay / graphql中,如何表达响应可以为空的查询 . 我现在有一个困境,我无法响应空/ null响应,因为继电器需要 id 字段(并且可能是graphql架构中的其他非可空字段),并且我不能发送错误,因为它阻止了我的组件渲染 .

例如,假设我正在 Build 一个关系层次结构,并且有一个类似的查询

getSpouse(partnerID: string): Person

对某些人来说这可能是空的 . 所以,我要么使用null Person对象进行响应(我认为继电器不太可能,因为Person可能有非可空字段,包括globalID),或者发送错误 . 可以发送错误,但我不知道如何捕获此错误并继续渲染中继容器 . 我知道在发生突变但是查询由中继容器处理时很热,并且无法看到接口以获取错误并继续加载组件 .

有没有办法在中继容器中捕获查询错误或将其传递给我的组件?

1 回答

  • 3

    接力核心团队的@josephsavona评论了一种方法 . 在https://github.com/facebook/relay/issues/487#issuecomment-232102389

    一种解决方法是使用自定义网络层,如果有任何数据(无论错误),则解析RelayQueryRequest,并且只有在没有数据和错误时才拒绝请求 .

    编辑:根据评论进行详细说明 .

    import { DefaultNetworkLayer } from 'react-relay';
    export default class RelayNetworkLayer extends DefaultNetworkLayer {
      // override whichever methods (like sendMutation, sendQueries)
    }
    

相关问题