当前位置:  开发笔记 > 编程语言 > 正文

如何用变量组合查询片段

如何解决《如何用变量组合查询片段》经验,为你挑选了1个好方法。

我正在使用Relay并且react-router-relay正在尝试组合几个Relay容器.内部容器需要一个查询片段变量,该变量必须从路由器向下传递到其父容器.它没有得到这个变量.

以下是代码的外观:

//  A "viewer":

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

//  A route to compose a message:



//  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永远不会$id从路径参数中获取.签名RelayContainer.getFragment()有参数似乎让你传递参数和变量,但我不知道如何使用它.



1> taion..:

你的user片段必须是这样的:

user: ({ id }) => Relay.QL`
  fragment on User {
    ${BodyContainer.getFragment('user', { id })}
    // other fragments
  }
`

另外,当你从中作曲时.你还需要传递id作为道具,例如


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

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有