带有整数查询参数的 RelayJS 不变违规

Posted

技术标签:

【中文标题】带有整数查询参数的 RelayJS 不变违规【英文标题】:RelayJS Invariant Violation with integer query parameter 【发布时间】:2015-12-16 13:55:05 【问题描述】:

我对 Relay 比较陌生,所以这可能是我犯的一个简单错误,但我已经寻找了一段时间,但我没有找到任何关于我遇到的问题的信息。

这是我从我的应用程序中得到的错误:

未捕获的错误:不变违规:GraphQLFragmentPointer:查询Routestory 的参数值应该是一个字符串,但它被设置为10。检查该值是否为字符串。

问题是我实际上希望它是 10 并且不希望它是字符串。我是否配置错误?

这是我的 GraphQL 架构:

var queryType = new GraphQLObjectType(
    name: 'Query',
    fields: () => (
        node: nodeField,
        story: 
            type: storyType,
            args: 
                storyID: 
                    description: 'Story ID',
                    type: GraphQLInt
                
            ,
            resolve: (root, storyID) => 
                if (storyID) 
                    return Story.get(storyID)
                 else 
                    return Story.get(10)
                
            
        ,
    ),
);

这是我定义的中继路线:

export default class extends Relay.Route 
  static queries = 
    story: () => Relay.QL`
      query 
        story(storyID: $storyID)
      
    `,
  ;

  static paramDefinitions = 
    storyID: 
        required: false
    ,
  ;

  static routeName = 'StoryRoute';
;

这就是我实例化它的方式:

let route = new Route(storyID: 10)

【问题讨论】:

【参考方案1】:

好吧,看来我终于想通了。

似乎根字段受到严重限制,目前只能没有参数,单个字符串参数或多个字符串参数,直接与获取的对象的 ID 连接。

在此处查找更多信息:https://github.com/facebook/relay/issues/112 在这里:https://github.com/facebook/relay/issues/94

【讨论】:

@ravibagul91 我很好奇你发现this suggestion 是为了解决帖子的作者。感谢您在任何情况下进行审查。

以上是关于带有整数查询参数的 RelayJS 不变违规的主要内容,如果未能解决你的问题,请参考以下文章

不变违规:查询(...):渲染没有返回任何内容。这通常意味着缺少返回语句

不变违规:无法在未安装的组件上找到节点。阿波罗

不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃

react-navigation:使用 Expo.addListener 在推送通知中导航的不变违规

不变违规:TurboModuleRegistry.getEnforcing(...): 'NativeReanimated' 找不到

不变违规:期望解析的 GraphQL 文档