2017-04-12 30 views
12

我有一个查询文件看起来像这样:阵营阿波罗 - 进行多项查询

import {gql} from 'react-apollo'; 

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

export default queries; 

我那么这个文件导入到我的阵营组成:

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中?

回答

15

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

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

所以你的情况,它可能是这样的:

import React, {Component} from 'react' 
 
import queries from './queries' 
 
import { 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);

+0

我也正是这种无济于事:( – user2465134

+0

奇怪,你尝试'的console.log(this.props )'在渲染功能? –

+0

是的,我试过了,只看到了我期待的一个属性 – user2465134

相关问题