2016-03-29 17 views
2

我正尝试在应用程序中使用中继来实现分页。在反应引导表和分页中显示数据以导航页面。第一次当我点击页面时,它加载第一页数据(执行根查询)。在分页(1,2,3 ..)的点击事件中,我请求下一页数据的服务器。因为预期的根查询执行并获取数据但UI上的数据没有得到更新..在浏览器控制台中,我可以看到以下错误继电器无法调节连接上的边缘

警告:中继无法协调连接上的边缘。这很可能发生在尝试处理服务器响应时,该响应包含缺少id字段的节点的连接边缘。

分页点击后,我可以看到所需参数的变化说pageNum = 2并在页面刷新它显示新的数据..但数据应该没有页面刷新。

回答

2

在定义GraphQL类型连接的服务器端GraphQL模式定义中,您是否定义了field :id, !types.IDglobalIdField

E.g. (在JavaScript,但适用于其他语言)

var myObjectType = new GraphQLObjectType({ 
    name: 'MyObject', 
    description: 'My Object', 
    fields:() => ({ 
    id: globalIdField('MyObject'), 
    ... 
    }) 
}) 

var myObjectListType = new GraphQLObjectType({ 
    name: 'MyObjectList', 
    description: 'List of My Objects', 
  fields:() => ({ 
  id: globalIdField('MyObjectList'), 
  denims: { 
   type: myObjectConnection, 
     ... 
    } 
    }) 
}) 

var {connectionType: myObjectConnection} = 
    connectionDefinitions({name: 'MyObject', nodeType: myObjectType}); 

可能涉及到:Nested fragment data always the same in Relay

+0

感谢您的答复,但我有场:ID对我的 “myObjectType” 和 “myObjectListType”。对于每个页面请求还有什么可以丢失,我可以看到数据作为响应而不是更新UI上的反应表。 – Buddy566

+0

在您解析为/作为响应返回的myObjectType实例对象中,实例对象是否有':id'字段? GraphQL将使用传递给'globalIdField'的类型(例如MyObject)和实例对象的':id'字段的组合来生成唯一的全局ID。 – nethsix

+0

是的实例对象也有id字段。例如对于myObjectType,我解析了具有id属性和其他所需属性的myObject实例..仅供参考,对于每个页面,请求都会转到服务器并为该特定页面获取数据。 – Buddy566