使用中继反应本机 graphql 查询:未收到获取的数据

Posted

技术标签:

【中文标题】使用中继反应本机 graphql 查询:未收到获取的数据【英文标题】:React Native graphql query with relay: fetched data not received 【发布时间】:2017-01-10 09:02:56 【问题描述】:

我有以下疑问:

query 
  viewer
    place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec")
      name
    
  

这当然可以在 GraphiQL 上正常工作。我想在 Relay 容器中使用这个查询,所以我创建了一个 RootContainer:

<RootContainer
  Component=PlaceDetailsComponent
  route=new PlaceDetailsRoute(placeID: this.props.id)
  renderFetched=(data) => 
    console.log('data: ', data);
    return (
      <PlaceDetailsComponent ...this.props ...data/>
    )
   
  renderLoading=() => <ProgressBar visible=true />/>

成功获取数据,但我在控制台上看到的只是:

data:   placeID: '1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec',
  viewer: 
    __dataID__: 'Vmlld2VyLXs6aWQ9PiJ2aWV3ZXIifQ==',
     __fragments__:  '1::client': [  ]   

所以我检查了实际发送到服务器的内容和收到的内容,我觉得一切正常:

这是我的路线:

import Relay,  
  Route
 from 'react-relay';

class PlaceDetailsRoute extends Route 
  static queries = 
    viewer: () => Relay.QL`
      query 
        viewer 
      
      `
  
  static routeName = 'PlaceDetailsRoute'


export default PlaceDetailsRoute;

这是我的片段:

Relay.createContainer(PlaceDetailsContainer, 
  fragments: 
    viewer: () => Relay.QL`
      fragment on Viewer  
        place(id: "1a4871311fe990d6d94cf1eed9fd65008856e118b790e7dcf728d86bc3aef7ec") 
          name,
        
      
      `
  
);

任何建议我应该改变什么?提前感谢您的帮助!

【问题讨论】:

什么工具使用从 react-native 调试 graphql 查询(参考您附加的图片)?迫切需要这样的东西。谢谢。 @user3740387 - 那是查尔斯,你可以在这里下载:charlesproxy.com 【参考方案1】:

这实际上是预期的行为。 Relay documentation of renderFetched 有注释:

尽管我们可以访问renderFetched 中的data 对象,但实际数据是故意不透明的。这可以防止renderFetched 创建对Component 声明的片段的隐式依赖。

希望这能消除您的困惑。

【讨论】:

我很高兴听到这个消息!

以上是关于使用中继反应本机 graphql 查询:未收到获取的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 graphql 在 react-native 中重新获取查询

反应本机中未处理的承诺拒绝错误?

当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新

prisma - 运行 graphql 查询时获取环境变量未找到错误消息

尝试从反应应用程序连接到 graphcool 中继 API 时出现此错误:模块构建失败:错误:没有有效的 GraphQL 端点

Babel 插件反应中继