2017-04-12 44 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

相關問題