首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用变量组合查询片段

如何使用变量组合查询片段
EN

Stack Overflow用户
提问于 2015-12-27 15:10:59
回答 1查看 2.9K关注 0票数 1

我正在使用中继和react-router-relay,并试图组成几个中继容器。内部容器需要一个查询片段变量,该变量必须通过父容器从路由器向下传递。不能得到这个变量。

下面是代码的外观:

代码语言:javascript
复制
//  A "viewer":

const UserQueries = { user: () => Relay.QL`query { user }` };

//  A route to compose a message:

<Route                                                                                                                                                                                  
  path='/compose/:id'                                                                                                                                                                          
  component={ ComposeContainer }                                                                                                                                                               
  queries={ UserQueries }                                                                                                                                                             
/>

//  A container:

const ComposeContainer = Relay.createContainer(
  Compose,
  {
    initialVariables: {
      id: null
    },                                                                                                                                                                                                                                                                                                                                                                                                  
    fragments: {                                                                                                                                                                                        
      user: () => Relay.QL`                                                                                                                                                                           
        fragment on User {                                                                                                                                                                          
          ${ BodyContainer.getFragment('user') }                                                                                                                                                           
          // other fragments                                                                                                                                              
        }                                                                                                                                                                                            
      `                                                                                                                                                                                               
     }
  }
);

//  And the composed container:

const BodyContainer = React.createContainer(
  Body,
  {
    initialVariables: {
      id: null
    },                                                                                                                                                                                                                                                                                                                                                                                                  
    fragments: {                                                                                                                                                                                        
      user: () => Relay.QL`                                                                                                                                                                           
        fragment on User {                                                                                                                                                                          
          draft(id: $id) {
            // fields
          }                                                                                                                                                    
        }                                                                                                                                                                                            
      `                                                                                                                                                                                               
     }
  }
);

BodyContainer中的草案字段从不从路由param获取$idRelayContainer.getFragment()的签名包含参数,这些参数似乎允许您传递参数和变量,但我不确定该如何使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-27 16:46:18

您在user上的<ComposeContainer>片段必须如下所示:

代码语言:javascript
复制
user: ({ id }) => Relay.QL`
  fragment on User {
    ${BodyContainer.getFragment('user', { id })}
    // other fragments
  }
`

另外,当您使用<BodyContainer>编写<ComposeContainer>时。您还需要将id作为一种工具传递。

代码语言:javascript
复制
<BodyContainer id={this.props.id} />

还请参阅https://github.com/facebook/relay/issues/309上的其他讨论。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34481732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档