几乎所有的graphql对象都要求用户通过身份验证才能访问它们。如果用户未登录或其凭据无效,则服务器会返回错误,并将标记requireLogin
设置为true
。
如何拦截Relay中出现的任何错误,捕获此特定错误,然后使用它来更新我在redux中的状态(然后会显示一条消息和一个登录框)?
理想的地方似乎是NetworkLayer,但在我实现自己的自定义NetworkLayer之前是否有更好的现有解决方案(例如某种类型的Relay-wide onError
处理程序)?
答案 0 :(得分:0)
您可能正在Relay Root Container寻找renderFailure
道具。这使您可以处理获取数据时发生的错误。如果您正在查找与Relay Mutations直接相关的错误,则可以向Relay.Store.commitUpdate
提供成功和错误处理程序。我认为这两者应该能够处理大多数情况。
你确实提到过使用Redux和Relay。我没有对结合这两个工具的OSS项目进行过任何研究,但是Relay本身也处理了Redux处理的很多东西以及更多。虽然Redux很棒,但我认为Relay更适合GraphQL本身和React,而且我觉得不需要在这个堆栈中找到Redux的位置。这可能会使事情复杂化。