javascript - React Apollo - 进行多个查询

标签 javascript reactjs apollo react-apollo

我有一个如下所示的查询文件:

import {gql} from 'react-apollo';

const queries = {
  getApps: gql`
    {
      apps {
        id
        name
      }
    }
  `,
  getSubjects: gql`
    {
      subjects {
        id
        name
      }
    }
  `
};

export default queries;

然后我将这个文件导入到我的 React 组件中:

import React, {Component} from 'react'
import queries from './queries'

class Test extends Component {
...
}

export default graphql(queries.getSubjects)(graphql(queries.getApps)(Test));

这只会获取其中一个查询 (getApps) 的数据,而不会同时获取这两个查询的数据。如果我一次做一个,它看起来像这样:

export default graphql(queries.getSubjects)(Test);

然后就可以了,但我没有其他查询。是的,我已经分别测试过它们并且它们有效。如何获取它以便两个查询都显示在我的 props.data 中?

最佳答案

我的首选方法是使用 apollo 客户端 ( docu ) 的 compose 功能。

编辑: 如果您有多个查询,您应该为它们命名。

所以在你的情况下,它可能看起来像这样:

import React, {Component} from 'react'
import queries from './queries'
import { graphql, compose } from 'react-apollo';

class Test extends Component {
...

  render() {
    ...
    
    console.log(this.props.subjectsQuery, this.props.appsQuery); // should show both 
    
    ...
  }
}

export default compose(
   graphql(queries.getSubjects, {
      name: "subjectsQuery"
   }),
   graphql(queries.getApps, {
      name: "appsQuery"
   }),
)(Test);

关于javascript - React Apollo - 进行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43380704/

相关文章:

javascript - 按下 'enter' 时,文本区域不会断行

reactjs - 情感风格不是压倒一切的组件

graphql - 如何在前端代码中使用 GraphQL 枚举(例如在 <select> 中)?

reactjs - react Apollo 错误: Invariant Violation: Could not find "client" in the context or passed in as an option

javascript - 我想使用 jquery 和 php 自动填充下拉列表

javascript - 文件系统 Nodejs : "Uncaught TypeError: fs.writeFileSync is not a function"

javascript - React.js : Props not being received by child component

reactjs - react-scripts' 不被识别为内部或外部命令

graphql - 具有动态键的对象的 Apollo/GraphQL 字段类型

javascript - Mongoose.findOne 不返回任何内容,为什么?